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