首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JAVA element.getElementsByTagName限制到顶层

JAVA element.getElementsByTagName限制到顶层
EN

Stack Overflow用户
提问于 2009-08-06 21:15:58
回答 5查看 30.8K关注 0票数 21

我有一个XML文件,如下所示:

代码语言:javascript
复制
<rootNode>
    <link>http://rootlink/</link>
    <image>
        <link>http://imagelink/</link>
        <title>This is the title</title>
    </image>
</rootNode>

使用DOM的XML Java代码如下所示:

代码语言:javascript
复制
NodeList rootNodeList = element.getElementsByTagName("link");

这将为我提供所有的"link“元素,包括顶层和"image”节点内部的元素。

有没有办法只在一个级别内获得rootNode的“链接”标记,而不是像图像链接那样获得两个级别的标记?也就是说,我只需要http://rootlink/的“链接”。

EN

回答 5

Stack Overflow用户

发布于 2009-08-06 21:28:50

您可以使用XPath

代码语言:javascript
复制
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
NodeList links = (NodeList) xpath.evaluate("rootNode/link", element,
    XPathConstants.NODESET);
票数 13
EN

Stack Overflow用户

发布于 2009-08-07 00:13:00

我也找不到任何方法来做到这一点,所以我写了这个helper函数,

代码语言:javascript
复制
 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;
  }
票数 11
EN

Stack Overflow用户

发布于 2009-08-06 21:18:23

如果您可以使用JDOM,则可以执行以下操作:

代码语言:javascript
复制
element.getChildren("link");

对于标准Dom,最接近的方法是迭代子节点列表(通过调用getChildNodes()并检查NodeList的每个项目(I),挑选出具有匹配名称的节点)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1241525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档