2013-02-11 59 views
1

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

例如

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

,而不是

<Config value="0"> 

这是非常糟糕的,因为我不能XOM事后处理XML结构再:(

哪里是这种效果的呢? 来我已经找到事实上,xml生成器似乎自动修复名称空间,使属性唯一。为什么这是必要的,我该如何避免它?

回答

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解析器。

+0

你是传奇!所有作品现在都如预期的谢谢=) – Divine 2013-02-12 19:46:29

3

对于那些正在寻找一个非woodstox答案。这对我来说是诀窍:

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