XMLWriter使用zdef扩展属性名称?

时间:2013-02-11 18:06:04

标签: java xml-serialization jackson xmlmapper fasterxml

我尝试使用XMLMapper将一些配置类序列化为xml配置文件。 但是我对属性生成有些麻烦。实际上生成的XML是完美的,但XMLMapper有时会为我的属性名称添加前缀。

e.g。

<Config zdef-2031720317:value="0">

而不是

<Config value="0">

这真的很糟糕,因为我不能再用XOM处理xml结构了:(

这种效果来自哪里? 我发现xml生成器似乎自动修复命名空间以使属性唯一。为什么这是必要的,我该如何避免呢?

2 个答案:

答案 0 :(得分:5)

经常导致XmlMapper出现问题的一件事是基础XML Stax库 - JDK中包含的一个有时会添加不必要的名称空间前缀。 解决方案是使用Woodstox Stax实现,因为众所周知,它通常可以更好地工作,并且在这种特定情况下也是如此。

如果你使用Maven,你可以在pom.xml

中添加它
<dependency>
  <groupId>org.codehaus.woodstox</groupId>
  <artifactId>woodstox-core-asl</artifactId>
  <version>4.1.4</version>
</dependency>

你的问题可能会得到解决。作为一个额外的好处,这也是更快的XML解析器。

答案 1 :(得分:4)

对于那些正在寻找非woodstox答案的人。这对我来说很有把握:

xmlMapper.getFactory().getXMLOutputFactory().setProperty("javax.xml.stream.isRepairingNamespaces", false);