DOM getElementsByTagName()返回具有NULL值的节点

gen*_* b. 5 java xml dom nodelist

我有一个XML文件如下.

当我使用getElementsByTagName("LEVEL2_ID"),我得到一个NodeListNodes,但这些节点有NULL值(换句话说,getNodeValue()每个节点的结果将返回NULL).为什么是这样?在这种情况下,我需要获取每个节点的内容值2000.

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
    <Date>01/17/2012</Date>
    <LEVEL1>
        <LEVEL1_ID>1000</LEVEL1_ID>

        <LEVEL2>
           <LEVEL2_ID>2000</LEVEL2_ID>
        </LEVEL2>
    </LEVEL1>
</Root>
Run Code Online (Sandbox Code Playgroud)

在Java中,打印使用getElementsByTagName()获取的第一个节点的将返回NULL:

NodeList nodes = document.getElementsByTagName("LEVEL2_ID");

System.out.println("Value of 1st node: " + nodes.item(0).getNodeValue());
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 8

这在规范中定义.元素节点nodeValuenull.

nodeValuetype DOMString:此节点的值,具体取决于其类型; 见上表.如果将其定义为null,则将其设置为无效.

如果要获取每个节点的文本内容,则必须遍历所有文本节点后代并连接它们的值.

也就是说,您正在使用的API实现可能提供一种方法来直接检索元素的文本内容.例如,PHP DOMNode有一个$textContent属性.

如果,在您的情况下,元素的唯一子节点实际上是您想要的文本节点,您只需访问其值:

element.getFirstChild().getNodeValue()
Run Code Online (Sandbox Code Playgroud)