首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取节点内部的节点值

获取节点内部的节点值
EN

Stack Overflow用户
提问于 2020-10-26 00:36:42
回答 1查看 37关注 0票数 0

我一直在努力为我的问题找到一个明确的解决方案,因为到目前为止我发现的每一个解释都是令人困惑的(至少对我来说是这样)。

我已经尝试过DOM阅读器,但是我不能用这个文件来补充它,因为它是一个更复杂的XML文件。

我的XML文件:

代码语言:javascript
复制
<Order>
  <OrderID>
    <OrderConfirmationDate>
      <Date>
       <Year>2000</Year>
       <Month>10</Month>
       <Day>06</Day>
      </Date>
    </OrderConfirmationDate>
  <Adress>
    <Name>Papel do Porto</Name>
      <Address1>Rua da Alegria</Address1>
      <Address2>nº1</Address2>
      <City>Porto</City>
      <PostalCode>4000-032</PostalCode>
      <Country ISOCountryCode="PT">Portugal</Country>
    </NameAddress>

这就是我到目前为止所理解的代码

代码语言:javascript
复制
dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(xmlFile);
            doc.getDocumentElement().normalize();
            
            System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

因此,我可以使用getDocumentElement()很容易地获得文档的根。使用getNodeName(),我可以很容易地获得根的节点。

但是我如何获取"node.getNodeName(). (在本例中,我的意思是从<OrderID>中获取<OrderConfirmationDate> )另外,我已经了解到像<Year><Month>这样的标记是节点<Date>的Ids。

EN

回答 1

Stack Overflow用户

发布于 2020-10-26 04:42:08

要选择特定节点,可以使用XPath表达式。

代码语言:javascript
复制
XPath xpath = XPathFactory.newDefaultInstance().newXPath();
XPathExpression expr = xpath.compile("//OrderConfirmationDate/Date");
Element orderConfirmationDateElement = (Element) expr.evaluate(doc, XPathConstants.NODE);

然后遍历节点的子节点:

代码语言:javascript
复制
NodeList dateChildren = orderConfirmationDateElement.getChildNodes();
for(int i = 0; i < dateChildren.getLength(); i++) {
    if (dateChildren.item(i).getNodeType() == Node.ELEMENT_NODE) {
        System.out.println(dateChildren.item(i).getNodeName() + ": " + dateChildren.item(i).getTextContent());
    }
}

输出:

代码语言:javascript
复制
Year: 2000
Month: 10
Day: 06
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64526165

复制
相关文章

相似问题

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