1

私はJavaで単純なXMLパーサーに取り組んでいます。私は DocumentBuilderFactory を多くのソースでうまく使用してきましたが、新しいソースの 1 つは個々のノードのコレクションです。

file.xml は次のようになります。

<XML Version....>
<!DOCTYPE...>
<main_document_node>
.....others....
</main_document_node>
<XML Version....>
<!DOCTYPE...>
<main_document_node>
.....others....
 </main_document_node>

私は次のようなコマンドを使用していました:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
Document d = dbf.newDocumentBuilder().parse(/path/file.xml);

しかし、それは複数の親ノードでは機能しないようです。main_document_node を書き込む一時作業ファイルを作成するよりも簡単な方法はありますか? その疑似コードは

new Writer temp.xml
new Reader file.xml
while not at the end of file.xml
    read/write first main_document_node to temp
    parse temp.xml

DocumentBuilderFactory の inputsource/stream オプションを使用する方法があるはずだと思いますが、それを行う方法がわかりません。

ありがとう!

4

1 に答える 1

1

計算文字列フラグメントから InputStream を作成することにより、ファイルへの書き込みステップをスキップできます (1 つのノードに対して)。

new Reader file.xml
while not at the end of file.xml {
    String node = read_first_main_document_node();
    InputStream is = new ByteArrayInputStream( node.getBytes( charset ) );
    parse(is); 
}
于 2012-08-08T16:02:41.207 に答える