4
我正在使用Jackson XML插件(https://github.com/FasterXML/jackson-dataformat-xml),我不確定它是否受支持,但我想知道是否可以使用命名空間對XML進行序列化和反序列化前綴,像這樣:Jackson XML - 使用命名空間前綴反序列化XML
<name:Foo>
<name:Bar>
<name:x>x</name:x>
<name:y>y</name:y>
</name:Bar>
</name:Foo>
我可以生成這種類型的XML的使用傑克遜的插件,像這樣:
@JacksonXmlProperty(localName="name:Bar")
public Bar getBar() {
return bar;
}
但是,我無法找到一個方法來配置我的POJO從XML反序列化產生。請看下面的示例代碼:
public class Bar{
@JacksonXmlProperty(localName="name:x")
public String x = "x";
@JacksonXmlProperty(localName="name:y")
public String y = "y";
}
@JacksonXmlRootElement(localName="name:Foo")
public class Foo{
private Bar bar;
@JacksonXmlProperty(localName="name:Bar")
public Bar getBar() {
return bar;
}
public void setBar(Bar bar) {
this.bar = bar;
}
}
public class TestDeserialization {
public static void main(String[] args) throws Exception {
Foo foo = new Foo();
foo.setBar(new Bar());
XmlMapper xmlMapper = new XmlMapper();
String xml = xmlMapper.writerWithDefaultPrettyPrinter().writeValueAsString(foo);
System.out.println(xml);
System.out.println("XML Desearialzing....");
Foo foo2= xmlMapper.readValue(xml, Foo.class);
System.out.println(xmlMapper.writeValueAsString(foo2));
}
}
試圖運行這個測試給了我一個例外:
Exception in thread "main" java.io.IOException: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "name"
這是可以理解的,但我是想知道是否有辦法讓這個與Jackson XML一起工作?
使用命名空間配置像上面生成以下XML:'<美孚的xmlns = 「名字」> X ý ' - 我可以假設這與我之前給出的XML示例是同義詞嗎? –
jtyler
2013-05-08 15:00:03
@jtyler是的,這個XML與你的相似 – Ilya 2013-05-08 15:05:07
@Ilya:我面臨的問題和這個問題一樣。我也得到' x y '。這與' '相同嗎?前綴未被添加。你能詳細說明嗎? –
2016-09-06 04:17:27