如何使用 Java 标准 DOM API 解析 DocumentFragment

Luk*_*der 6 java dom well-formed documentfragment xml-parsing

这是我如何在 Java 中解析格式良好的 XML 文档:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

// text contains the XML content
Document doc = builder.parse(new InputSource(new StringReader(text)));
Run Code Online (Sandbox Code Playgroud)

文本示例如下:

<a>
  <b/>
</a>
Run Code Online (Sandbox Code Playgroud)

如何解析 DocumentFragment?例如,这个:

<a>
  <b/>
</a>
<a>
  <b/>
</a>
Run Code Online (Sandbox Code Playgroud)

注意:org.w3c.dom如果可能,我想使用并且不使用其他库/技术。

Luk*_*der 6

我只是想到了一个愚蠢的解决方案。我可以将片段包装在一个虚拟元素中,如下所示:

<dummy><a>
  <b/>
</a>
<a>
  <b/>
</a></dummy>
Run Code Online (Sandbox Code Playgroud)

然后再次以编程方式过滤掉该虚拟元素,如下所示:

String wrapped = "<dummy>" + text + "</dummy>";
Document parsed = builder.parse(new InputSource(new StringReader(wrapped)));
DocumentFragment fragment = parsed.createDocumentFragment();

// Here, the document element is the <dummy/> element.
NodeList children = parsed.getDocumentElement().getChildNodes();

// Move dummy's children over to the document fragment
while (children.getLength() > 0) {
    fragment.appendChild(children.item(0));
}
Run Code Online (Sandbox Code Playgroud)

但这有点蹩脚,让我们看看是否有其他解决方案。