Div*_*ine 2 java xml-serialization jackson xmlmapper fasterxml
我尝试使用XMLMapper将一些配置类序列化为xml配置文件.但是我对属性生成有些麻烦.实际上生成的XML是完美的,但XMLMapper有时会为我的属性名称添加前缀.
例如
<Config zdef-2031720317:value="0">
Run Code Online (Sandbox Code Playgroud)
代替
<Config value="0">
Run Code Online (Sandbox Code Playgroud)
这真的很糟糕,因为我不能再用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>
Run Code Online (Sandbox Code Playgroud)
你的问题可能会得到解决.作为额外的好处,这也是更快的XML解析器.
小智 5
对于那些正在寻找非伍德斯托克答案的人。这对我有用:
xmlMapper.getFactory().getXMLOutputFactory().setProperty("javax.xml.stream.isRepairingNamespaces", false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2050 次 |
| 最近记录: |