StAXイテレータAPIを使用してSVGファイルの一部の属性の値を置き換えようとしています。 XMLEventReader
を使って元のファイルを読んで、要素をチェックして変更してから、XMLEventWriter
に書き込んでいます。StAXを使用して小さな変更(属性の変更など)を行うXMLレイアウト(属性の順序、改行)を保持
<?xml version="1.0" encoding="UTF-8"?>
<!--
...
-->
<!DOCTYPE ...
...
]>
<svg ...
私が手出力が同じではありません:
私の元のファイルは、以下の構造を有する
<?xml version="1.0"?><!--
...
--><!DOCTYPE ...
...
]><svg ...
あなたが見ることができるように、encoding
は周りの改行だけでなく、なくなっていますコメントとdoctype。
また、結果ファイル内のすべてのタグのすべての属性の順序はランダムであるようです。 another questionを読みましたが、属性の順序は保証されていませんが、これは私には役立ちません。
これらのSVGファイルはGitにありますので、プレーンテキストのレイアウトは可能な限り保存していきたいと思います。
これらの問題を解決するにはどうすればよいですか?私の現在の仕事では、解析値を使わずに属性値をプレーンテキストとして置き換えることができましたが、タグのネストやそのようなことを考慮に入れるための解決策が必要です。
StAXで実行できない場合は、私は全く別のアプローチに対応しています。私はすでにDOMのアプローチを試みてきましたが、それはさらに悪化しています。おそらく、いくつかの3Dパーティパーサーがあります...
おかげで@ VTD-XML-著者で述べたように、属性の