4

XMLMapperを使用して、いくつかの構成クラスをxml構成ファイルにシリアル化しようとしています。しかし、属性の生成に問題があります。実際に生成されたXMLは完璧ですが、XMLMapperは属性名にプレフィックスを追加することがあります。

例えば

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

それ以外の

<Config value="0">

後でXOMでxml構造を処理できないため、これは本当に悪いことです:(

この効果はどこから来るのですか?xmlジェネレーターが名前空間を自動修正して属性を一意にするように見えるという事実をすでに見つけました。なぜこれが必要なのですか、どうすれば回避できますか?

4

2 に答える 2

7

ウッドストック以外の回答を探している人向け。これは私にとってはうまくいきました:

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

しばしば問題を引き起こす原因の 1XmlMapperつは、基礎となる 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 に答える