Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取节点内节点的值_Java_Xml - Fatal编程技术网

Java 获取节点内节点的值

Java 获取节点内节点的值,java,xml,Java,Xml,我一直在试图为我的问题找到一个清晰的解决方案,因为直到现在我发现的每一个解释都令人困惑(至少对我来说) 我尝试过DOM阅读器,但我不能用这个文件来补充它,因为它是一个更复杂的XML文件 我的XML文件: <Order> <OrderID> <OrderConfirmationDate> <Date> <Year>2000</Year> <Month>10<

我一直在试图为我的问题找到一个清晰的解决方案,因为直到现在我发现的每一个解释都令人困惑(至少对我来说)

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

我的XML文件:

<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>
因此,我可以使用
getDocumentElement()
轻松获取文档的根。我可以通过
getNodeName()
轻松获得根节点

但是如何获取
“node.getNodeName()。
(在本例中,我的意思是从
中获取

另外,我已经了解到像
这样的标记是节点的ID

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

XPath xpath = XPathFactory.newDefaultInstance().newXPath();
XPathExpression expr = xpath.compile("//OrderConfirmationDate/Date");
Element orderConfirmationDateElement = (Element) expr.evaluate(doc, XPathConstants.NODE);
        
然后,要查看节点的子节点,请执行以下操作:

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());
    }
}
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());
    }
}
Year: 2000
Month: 10
Day: 06