我有一个XML org.w3c.dom.Document对象。
它看起来像这样:
<A>
<B>
<C/>
<D/>
<E/>
<F/>
</B>
<G>
<H/>
<H/>
<J/>
</G>
</A>
如何转换Document对象,以便剥离根节点并返回另一个Document对象子集(按名称选择),如下所示:
<G>
<H/>
<H/>
<J/>
</G>
我希望有这样的事情:
...
Document doc = db.parse(file);
Document subdoc = doc.getDocumentSubsetByName("G"); //imaginary method name
NodeList nodeList = subdoc.getElementsByTagName("H");
但我找不到这样的事情。
答案结果是这样的:
...
Document doc = db.parse();
doc.getDocumentElement.normalize();
NodeList a = doc.getElementsByTagName("A");
Element AsubNode = null;
if (a.item(0) != null) {
AsubNode = (Element) a.item(0);
nodeList = AsubNode.getElementsByTagName("G");
...
答案 0 :(得分:0)
您只需使用getElementsByTagName("G")
获取G
元素,然后选择其中一个元素并在其上调用getElementsByTagName("H")
。
答案 1 :(得分:0)
当然,你总是可以使用XPath来做同样的事情:
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.NodeList;
final XPath xpath = XPathFactory.newInstance().newXPath();
final NodeList list = (NodeList) xpath.evaluate("/A/G/H",
doc.getDocumentElement(), XPathConstants.NODESET);
当元素的路径开始变得更复杂(需要属性谓词等)时,这开始得到回报。