Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XMLWriter使用zdef扩展属性名?_Java_Xml Serialization_Jackson_Xmlmapper_Fasterxml - Fatal编程技术网

Java XMLWriter使用zdef扩展属性名?

Java XMLWriter使用zdef扩展属性名?,java,xml-serialization,jackson,xmlmapper,fasterxml,Java,Xml Serialization,Jackson,Xmlmapper,Fasterxml,我尝试使用XMLMapper将一些配置类序列化为xml配置文件。 但是我在属性生成方面遇到了一些问题。实际上,生成的XML是完美的,但XMLMapper有时会在属性名中添加前缀 e、 g 而不是 <Config value="0"> 这真的很糟糕,因为我以后再也不能用XOM处理xml结构了:( 这种效应从何而来? 我已经发现,xml生成器似乎可以自动修复名称空间以使属性唯一。为什么有必要这样做?如何避免这样做?一件经常导致XmlMapper出现问题的事情是底层xml Sta

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

e、 g


而不是

<Config value="0">

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

这种效应从何而来?
我已经发现,xml生成器似乎可以自动修复名称空间以使属性唯一。为什么有必要这样做?如何避免这样做?

一件经常导致
XmlMapper
出现问题的事情是底层xml Stax库——JDK中包含的一个库有时会添加不必要的名称空间前缀。 解决方案是改用Stax实现,因为通常情况下,也就是在这种特定情况下,它工作得更好

如果使用Maven,只需将其添加到
pom.xml

<dependency>
  <groupId>org.codehaus.woodstox</groupId>
  <artifactId>woodstox-core-asl</artifactId>
  <version>4.1.4</version>
</dependency>

org.codehaus.woodstox
woodstox core asl
4.1.4

您的问题可能会得到解决。作为额外的奖励,这也是更快的XML解析器。

对于那些正在寻找非woodstox答案的人来说。这为我带来了窍门:

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