我想获得围绕文本节点的元素节点。根据这个元素包含一个文本节点,反之亦然,一个文本节点应该被一个元素节点包围。
我需要元素节点(openingTime)来获取属性(day),但是 NodeList (从节点openingHours调用的 getChildNodes() )只给了我文本节点,它们的父节点是元素节点(openingHours),但不是围绕文本节点的那个,而不是上面的那个。如果有人问,我需要使用 DOM,因为据我了解,它是最快的。
这是 XML:
<?xml version="1.0"?>
<stores>
<store name = "the Name of the Store">
<category>2nd Hand</category>
<locationAdress>sonstwo 18b, 12345 Bla</locationAdress>
<telephoneNumber>1234567812</telephoneNumber>
<openingHours>
<!-- Opening Hours, day permitted values: 1(Monday) - 7(Sunday) and 8 (workweek) -->
<openingTime day = "1">7:00 - 13:00 15:00 - 18:00</openingTime>
<openingTime day = "2">7:00 - 13:00 15:00 - 18:00</openingTime>
<openingTime day = "3">7:00 - 13:00 15:00 - 18:00</openingTime>
<openingTime day = "4">7:00 - 13:00 15:00 - 18:00</openingTime>
<openingTime day = "5">7:00 - 13:00 15:00 - 18:00</openingTime>
</openingHours>
</store>
</stores>
这是我的java代码:
NodeList hoursList = storeElement.getElementsByTagName("openingHours").item(0).getChildNodes();
for (int y = 0; y < hoursList.getLength(); y++) {
Node hoursNode = hoursList.item(y);
boolean isElement = hoursNode.getNodeType() == Node.ELEMENT_NODE;
boolean hasChild = hoursNode.getChildNodes().getLength() != 0;
String nameParent = hoursNode.getParentNode().getNodeName();
boolean isElement 为 false,hasChild 也为 false,String nameParent 为 openingHours。