XStream по умолчанию не поддерживает пространство имен, хотя я думаю, что вы можете включить это. Вы должны быть в состоянии найти детали на сайте. Чтобы просто получить доступ к пространству имен, вы можете обработать его как любой другой атрибут:
public static void main(String[] args) {
String xml = "<x:foo xmlns:x=\"http://foo.com\">" +
"<bar xmlns=\"http://bar.com\"/>" +
"</x:foo>";
XStream xstream = new XStream();
xstream.alias("x:foo", Foo.class);
xstream.useAttributeFor(Foo.class, "xmlns");
xstream.aliasField("xmlns:x", Foo.class, "xmlns");
xstream.alias("bar", Bar.class);
xstream.useAttributeFor(Bar.class, "xmlns");
xstream.aliasField("xmlns", Foo.class, "xmlns");
Object o = xstream.fromXML(xml);
System.out.println("Unmarshalled a " + o.getClass());
System.out.println("Value: " + o);
}
static class Foo {
private String xmlns;
private Bar bar;
public String toString() {
return "Foo{xmlns='" + xmlns + "', bar=" + bar + '}';
}
}
static class Bar {
private String xmlns;
public String toString() {
return "Bar{xmlns='" + xmlns + "'}";
}
}