5

我有一个如下的 XML 文件。

当我使用 时getElementsByTagName("LEVEL2_ID"),我确实得到了一个NodeListwith Nodes,但是这些节点具有 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>

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

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

System.out.println("Value of 1st node: " + nodes.item(0).getNodeValue());
4

2 回答 2

8

这是规范中定义的。元素节点'nodeValuenull

nodeValueof type DOMString:这个节点的值,取决于它的类型;见上表。定义为null时,设置无效。

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

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

如果在您的情况下,元素的唯一子节点实际上是您想要的文本节点,您可以简单地访问它的值:

element.getFirstChild().getNodeValue()
于 2012-01-19T18:00:57.367 回答
4

如果您有一个元素节点并想要获取其内部文本,请getTextContent()像这样使用:

NodeList nodes = document.getElementsByTagName("LEVEL2_ID");
System.out.println("Value of 1st node: " + nodes.item(0).getTextContent());
于 2012-01-19T18:37:00.990 回答