Dường như XStream (com.thought-.xstream -> xstream 1.4.2) đang xử lý dấu gạch dưới trong tên phần tử và thuộc tính theo cách rất lạ. Tôi cần tìm nạp và phân tích cú pháp xml từ khách hàng có dấu gạch dưới trong thuộc tính của họ. Đây là lần thử đầu tiên của tôi với XStream và tôi hơi thất vọng vì tôi đã hy vọng tránh được tất cả các phân tích cú pháp xml xấu xí.XStream và gạch dưới
Ở đây tôi cung cấp một mẫu thử nhỏ để làm sáng hành vi. Ví dụ cuối cùng cho thấy vấn đề của tôi.
public class MyTest {
public void testIt() {
C1 a = new C1();
a.a_b= "a_b";
XStream xstream = new XStream();
xstream.processAnnotations(C1.class);
String xml = xstream.toXML(a);
Logger.info(xml);
C1 b = (C1) xstream.fromXML(xml);
Logger.info(b.a_b);
C1 c = (C1) xstream.fromXML("<C1 a_b=\"a_b\"/>");
Logger.info(c.a_b);
}
}
@XStreamAlias("C1")
class C1 {
@XStreamAsAttribute
String a_b;
}
này kết quả đầu ra
INFO: <C1 a__b="a_b"/>
INFO: a_b
INFO: null
Bây giờ câu hỏi của tôi - là có một cách để làm cho XStream hiểu một dấu gạch dưới không?
Cảm ơn rất nhiều. XStream (new StaxDriver (new NoNameCoder())) không hoạt động nên tôi sẽ điều tra việc tạo một custom. – eigil
NoNameCoder không hoạt động. Tôi chỉ quên thêm @XStreamAlias ("a_b") vào biến khi tôi thay đổi nó thành ab dựa trên đề xuất của bạn về các quy ước đặt tên java. – eigil