4

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

例如

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

代替

<Config value="0">

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

这种效果从何而来?我已经发现 xml 生成器似乎会自动修复名称空间以使属性独一无二。为什么这是必要的,我该如何避免?

4

2 回答 2

7

经常引起问题的一件事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 解析器。

于 2013-02-12T18:25:16.543 回答
7

对于那些正在寻找非伍德斯托克斯答案的人。这对我有用:

xmlMapper.getFactory().getXMLOutputFactory().setProperty("javax.xml.stream.isRepairingNamespaces", false);
于 2016-11-01T13:25:36.813 回答