私は、XML ファイルを読み取り、いくつかの変更を行い、XML を書き戻す Java プログラムを作成しています。
標準の Java XML DOM API を使用すると、属性の順序は保持されません。
つまり、次のような入力ファイルがあるとします。
<person first_name="john" last_name="lederrey"/>
出力ファイルは次のようになります。
<person last_name="lederrey" first_name="john"/>
XML 仕様では、順序属性は重要ではないと規定されているため、そのとおりです。
ただし、私のプログラムでは属性の順序を保持する必要があるため、入力ドキュメントと出力ドキュメントを比較ツールで簡単に比較できます。
そのための 1 つの解決策は、(DOM の代わりに) SAX を使用してドキュメントを処理することです 。DOM 処理後の XML 属性の順序
ただし、1 つのノードで行う必要がある変換は、ドキュメント全体のXPath式に依存する可能性があるため、これは私の場合には機能しません。
したがって、属性の順序を保持する点を除いて、標準の Java DOM ライブラリと非常によく似た XML ライブラリを用意するのが最も簡単な方法です。
そのような図書館はありますか?
PS: 属性の順序を保持する必要があるかどうかについての議論は避けてください。これは非常に興味深い議論ですが、この質問のポイントではありません。