我有一个XML文件,如下所示:
<rootNode>
<link>http://rootlink/</link>
<image>
<link>http://imagelink/</link>
<title>This is the title</title>
</image>
</rootNode>
使用DOM的XML Java代码如下所示:
NodeList rootNodeList = element.getElementsByTagName("link");
这将为我提供所有的"link“元素,包括顶层和"image”节点内部的元素。
有没有办法只在一个级别内获得rootNode的“链接”标记,而不是像图像链接那样获得两个级别的标记?也就是说,我只需要http://rootlink/的“链接”。
发布于 2009-08-06 21:28:50
您可以使用XPath
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
NodeList links = (NodeList) xpath.evaluate("rootNode/link", element,
XPathConstants.NODESET);
发布于 2009-08-07 00:13:00
我也找不到任何方法来做到这一点,所以我写了这个helper函数,
public static List<Element> getChildrenByTagName(Element parent, String name) {
List<Element> nodeList = new ArrayList<Element>();
for (Node child = parent.getFirstChild(); child != null; child = child.getNextSibling()) {
if (child.getNodeType() == Node.ELEMENT_NODE &&
name.equals(child.getNodeName())) {
nodeList.add((Element) child);
}
}
return nodeList;
}
发布于 2009-08-06 21:18:23
如果您可以使用JDOM,则可以执行以下操作:
element.getChildren("link");
对于标准Dom,最接近的方法是迭代子节点列表(通过调用getChildNodes()并检查NodeList的每个项目(I),挑选出具有匹配名称的节点)。
https://stackoverflow.com/questions/1241525
复制相似问题