2009-08-18 10 views
1

大規模なXMLファイルを解析し、Javaから一度に完全なノードを読みたいと思っています。ファイルはツリーに入れるために大きくなります。可能であれば、プル・パーサーを使用したいのですが、それはプログラムするのが簡単だからです。次のXMLデータ 代わりに私がレコードノード上の完全な情報を含むオブジェクトを返すためのhasNextまたはいくつかの類似の機能への各呼び出しが欲しいのStAXパーサーを使用しながら、すべてのイベントをチェックすることの
考えます。 Perl XML :: LibXML :: Readerを使用すると、readメソッドを使用してこれを行うことができますので、Javaで同等のものを探しています。プルパーサーを使用して、大きなxmlファイルをJavaで一度に1ノードずつ読み込みますか?

答えて

2

Commons Digesterは、このタイプの問題には本当に良いです。パーザが特定のタグに出会うと、アクションを実行します(たとえば、オブジェクトを作成するためのファクトリメソッドを呼び出します)。解析コードを書く必要がなく、開発を迅速かつ軽量にします。

以下は、あなたが使用できる簡単な例のパターンです:

<pattern value="myConfigFile/foos/foo"> 
    <factory-create-rule classname="FooFactory"/> 
    <set-next-rule methodname="processFoo" paramtype="com.foo.Foo"/> 
</pattern> 

パーサはFooオブジェクトを作成することがFooFactorycreateObject(Attributes)を呼び出します「foo」というタグを、遭遇

。パーサーは、 Digesterスタックの上部にあるオブジェクトの processFooを呼び出します(通常、解析を開始する前にスタックにプッシュします)。したがって、これらのオブジェクトをコレクションに追加するには、 processFooを実装することができます。ファイルが大きすぎる場合は、各オブジェクトを到着時に処理してから放棄するだけです。

1

は、私はそれを使用するかもしれないが、それは積極的に維持されているように見えていませんXML Pull Parser

+0

を試してみてください。 – Jared

関連する問題