Wygląda na to, że XStream (com.thoughtworks.xstream -> xstream 1.4.2) obsługuje znaki podkreślenia w nazwach elementów i atrybutów w bardzo dziwny sposób. Muszę pobrać i przeanalizować xml od klienta, który ma podkreślenia w swoich atrybutach. To jest moja pierwsza próba z XStreamem i jestem trochę rozczarowany, ponieważ miałem nadzieję, że uniknę tego brzydkiego parsowania xml.XStream i podkreślenia
Tutaj przedstawiam małą próbkę do sprawdzenia zachowania. Ostatni przykład pokazuje mój problem.
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;
}
ten wyprowadza
INFO: <C1 a__b="a_b"/>
INFO: a_b
INFO: null
Teraz moje pytanie - czy jest jakiś sposób, aby XStream zrozumieć pojedyncze podkreślenia?
Dzięki bardzo. XStream (nowy StaxDriver (nowy NoNameCoder())) nie działał, więc zbadam, jak zrobić niestandardowy. – eigil
NoNameCoder działa. Właśnie zapomniałem dodać @XStreamAlias ("a_b") do zmiennej, kiedy zmieniłem ją na ab na podstawie twojej sugestii o konwencjach nazewnictwa java. – eigil