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 + "'}";
}
}
+ 1,簡單的解決方案,謝謝 – bbaja42