![]() |
酒量小的登山鞋 · ERP实施顾问面试题目_erp面试题-CSDN博客· 5 月前 · |
![]() |
逼格高的凉面 · Kindle电子书店停止下载服务:我们依然在 ...· 6 月前 · |
![]() |
骑白马的黑框眼镜 · 普惠金融如何支持困难群体创新创业?-新华网· 8 月前 · |
![]() |
强健的太阳 · 尤里乌斯·凯撒·齐贝林_百度百科· 8 月前 · |
![]() |
风流的板凳 · 90%的人都用错了!PPT结束页别再写「感谢 ...· 1 年前 · |
我正在使用Jackson插件( https://github.com/FasterXML/jackson-dataformat-xml ),我不确定是否支持它,但我想知道是否可以使用命名空间前缀序列化和反序列化XML,如下所示:
<name:Foo>
<name:Bar>
<name:x>x</name:x>
<name:y>y</name:y>
</name:Bar>
</name:Foo>
我可以使用Jackson的插件生成这类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一起工作?
发布于 2013-05-08 14:06:37
JacksonXmlProperty
注释具有属性
namespace
。使用它来定义
namespace
public class Bar {
@JacksonXmlProperty(namespace = "name",localName="x")
public String x = "x";
@JacksonXmlProperty(namespace = "name",localName="y")
public String y = "y";
@JacksonXmlRootElement(namespace = "name", localName = "Foo")
public class Foo {
private Bar bar;
@JacksonXmlProperty(namespace = "name", localName = "Bar")
public Bar getBar() {
return bar;
public void setBar(Bar bar) {
this.bar = bar;
}
发布于 2021-03-31 13:13:02
虽然这是一个旧帖子,但我只是遇到了这个问题,唯一匹配服务调用所需的XML的解决方案是这样的,名称空间声明也使用前缀。
@JacksonXmlRootElement(localName = "entry")
abstract class BaseEntry implements Serializable {
private static final long serialVersionUID = 6835429382441010779L;
private final String xmlns = "com.foo.bar";
private String type;
protected BaseEntry(String type) {
this.type = type;
@JacksonXmlProperty(isAttribute = true)
public String getType() {
return type;
@JacksonXmlProperty(localName = "xmlns:ns2", isAttribute = true)
public String getXmlns() {
return xmlns;
![]() |
酒量小的登山鞋 · ERP实施顾问面试题目_erp面试题-CSDN博客 5 月前 |
![]() |
骑白马的黑框眼镜 · 普惠金融如何支持困难群体创新创业?-新华网 8 月前 |
![]() |
强健的太阳 · 尤里乌斯·凯撒·齐贝林_百度百科 8 月前 |