2

FO変換前または後のいずれかの状態にあるXMLドキュメントがあり、そこから情報を抽出する必要があります。前のケースでは、pageWidthとpageHeightを表す2つのタグを引き出す必要があり、後のケースでは、特定のタグからpage-heightとpage-widthのパラメーターを抽出する必要があります(どちらが外れているか忘れています)私の頭のてっぺん)。

私が探しているのは、これら2つの要素を取得するための効率的で簡単に保守できる方法です。必要な2つのものを取得して、ドキュメントを1回だけ読みたいと思います。

最初はBufferedReader+を使用するものを書き始めましFileReaderたが、文字列検索を行っているため、タグが複数行にまたがると面倒になります。次に、を調べましたDOMParser。これは理想的と思われますが、ファイルが大きくなる可能性があり、探しているタグが大きくなる可能性があるため、ファイル全体をメモリに読み込む必要はありません。ほとんどの場合、ファイルの先頭に近い位置にあります。それから私は調べましたSAXParser、しかしそれは私が成し遂げようとしていることのための複雑なやり過ぎの大きな山のようです。

誰かアドバイスはありますか?または、私の目標を達成する簡単な実装ですか?ありがとう。

編集:私が持っているさまざまな制限のために、私が使用するものはすべてコアJavaに「組み込まれている」必要があり、サードパーティのXMLツールを使用および/またはダウンロードできないことを忘れました。

4

3 に答える 3

4

XPath は XML データのクエリには非常に適していますが、Java 用の優れた高速な XPath 実装については知りません (少なくともすべて DOM モデルを使用しています)。

StAXに固執することをお勧めします。巨大なファイルでも非常に高速で、カーソル API はかなり簡単です。

XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader r = f.createXMLStreamReader("my.xml");
try {
  while (r.hasNext()) {
    r.next();
    . . .
  }
} finally {
  r.close()
}

詳細については、 StAX チュートリアルXMLStreamReader javadocsを参照してください。

于 2010-04-05T19:15:41.990 に答える
1

XPathを使用してタグを検索できます。これは、 XPath式の作成に関するチュートリアルです。Java でのXPathの使用に関する記事はこちらです。


使いやすいパーサー (dom、sax) はdom4jです。組み込みの SAXParser よりもはるかに使いやすいでしょう。

于 2010-04-05T18:48:11.863 に答える
0

「XMLDog」を試す

これはsaxを使用してxpathを評価します

于 2010-04-05T20:07:29.703 に答える