XMLWriter使用zdef扩展属性名称?
问题描述:
我尝试使用XMLMapper将一些配置类序列化为xml配置文件。 但我在生成属性时遇到了一些麻烦。实际上,生成的XML是完美的,但XMLMapper有时会为我的属性名称添加一个前缀。XMLWriter使用zdef扩展属性名称?
例如
<Config zdef-2031720317:value="0">
,而不是
<Config value="0">
这是非常糟糕的,因为我不能XOM事后处理XML结构再:(
哪里是这种效果的呢? 来我已经找到事实上,xml生成器似乎自动修复名称空间,使属性唯一。为什么这是必要的,我该如何避免它?
答
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解析器。
答
对于那些正在寻找一个非woodstox答案。这对我来说是诀窍:
xmlMapper.getFactory().getXMLOutputFactory().setProperty("javax.xml.stream.isRepairingNamespaces", false);
你是传奇!所有作品现在都如预期的谢谢=) – Divine 2013-02-12 19:46:29