我有一个XML文件如下。
当我使用getElementsByTagName("LEVEL2_ID")
时,我确实得到NodeList
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());
答案 0 :(得分:8)
That is defined in the specification。元素节点“nodeValue
为null
。
类型为nodeValue
的
DOMString
:此节点的值,具体取决于其类型;见上表。如果将其定义为null,则将其设置为无效。
如果要获取每个节点的文本内容,则必须迭代所有文本节点后代并连接它们的值。
也就是说,您正在使用的API实现可能提供一种方法来直接检索元素的文本内容。例如,PHP的DOMNode
具有$textContent
属性。
如果在您的情况下,元素的唯一子节点实际上是您想要的文本节点,则只需访问其值:
element.getFirstChild().getNodeValue()
答案 1 :(得分:3)
如果您有一个元素节点并想要获取其内部文本,请使用getTextContent()
,如下所示:
NodeList nodes = document.getElementsByTagName("LEVEL2_ID");
System.out.println("Value of 1st node: " + nodes.item(0).getTextContent());