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