具有多个父节点的DocumentBuilderFactory

时间:2012-08-08 15:48:42

标签: java xml xml-parsing

我正在使用Java中的简单XML解析器。我已经成功地使用了DocumentBuilderFactory和许多源代码,但我的一个新代码是单个节点的集合。

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选项,但我不知道如何去做。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以通过从computet字符串片段(对于一个节点)创建一个InputStream来跳过写入文件步骤:

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); 
}