1

私は約300の要素を含む大きなXMLを持っています。Javaを使用してこのxmlの2つまたは3つの要素を変更する必要があります。XML全体の解析が含まれるため、従来のマーシャリングとアンマーシャリングには行きたくありません。XPath / XSLTの操作はどうですか?データを簡単に読み取ることができることは知っていますが、同じものを変更して同じXMLに戻す必要があります。ここでの主な関心事はパフォーマンスです。親切なアドバイス

4

2 に答える 2

1

XPath/XSLT を使用するということは、ドキュメントの変換を開始する前にドキュメント全体をメモリにロードすることを意味します。それが問題である場合 (たとえば、ドキュメントがメモリに対して大きすぎるなど)、別の解決策を使用する必要があります。とはいえ、300 個の要素はそれほど「大きい」とは言えません。

代替手段の 1 つは、StAX パーサーを使用してターゲット要素を見つけて変更することです。Is there a way to build a StAX filter chain? を見てください。

于 2012-06-20T09:36:14.290 に答える
1

XSLT はこの問題には重すぎるようです。ファイルを少し書き換えたい。各変更を簡単に説明できる場合 (たとえば、「bar」要素の「foo」属性を削除したい場合)、正規表現置換の適用を検討してください。このようなもの:

String fileContents = ...

fileContents.replaceAll("<bar foo=\"\\w+\"", "<bar");

于 2012-06-26T13:33:21.400 に答える