Java 获取包含TextNode的元素

Java 获取包含TextNode的元素,java,xml,dom,textnode,Java,Xml,Dom,Textnode,我想在文本节点上找到元素节点箭头。根据元素包含文本节点,反之亦然,文本节点应由元素节点包围 我需要元素节点(openingTime)来获取属性(day),但是节点列表(从节点openingHours调用的getChildNodes()只给我文本节点,它们的父节点是元素节点(openingHours),而不是文本节点周围的节点,而是上面的那个。如果有人问,我需要使用DOM,因为据我所知,它是最快的 以下是XML: <?xml version="1.0"?> <stores>

我想在文本节点上找到元素节点箭头。根据元素包含文本节点,反之亦然,文本节点应由元素节点包围

我需要元素节点(openingTime)来获取属性(day),但是节点列表(从节点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>

二手货
sonstwo 18b、12345 Bla
1234567812
7:00 - 13:00 15:00 - 18:00
7:00 - 13:00 15:00 - 18:00
7:00 - 13:00 15:00 - 18:00
7:00 - 13:00 15:00 - 18:00
7:00 - 13:00 15:00 - 18:00
以下是我的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();
nodelisthourslist=storeElement.getElementsByTagName(“openingHours”).item(0.getChildNodes();
对于(int y=0;y

布尔isElement为false,hasChild也为false,String nameParent为openingHours。

isElement对于某些元素应为false,对于其他元素应为true,因为openingHours同时具有子文本节点和子元素。为什么不使用
hoursList.getElementsByTagName(“openingTime”)
,因为这就是你想要的?而且,DOM远不是最快的。嗯……那么我认为我对DOM文档的理解是错误的。我认为元素ecapsulates是TextNode(我的源代码最后一部分).Thank;)我没有读过太多关于xml解析的书,因为这是我在当前项目中唯一需要使用它的时候。我认为DOM对于较小的xml文件来说是最快的(与SAX和Stax相比)。我明天会试试……我住的地方已经很晚了:)@Lele-如果你是这个意思:“获取元素文本的方法是获取子节点(文本节点)的值。",那么是的,它既错误又令人困惑。在退化的情况下,元素的唯一内容是单个文本节点,这是唯一正确的。即使如此,它是元素内容的文本,而不是元素本身的文本。W3Schools是一个糟糕的源代码。有关更多详细信息,请参阅。我想我是通过以下方式了解到的:D.从不trus学校。。。。。