Element :: textContent和NodeList :: item :: getNodeValue之间的区别

时间:2012-04-04 14:35:17

标签: java xml xml-parsing xmldom

我是XML的新手,并且拥有一个带有root和子子标签的XML文件。对于其中一个子标签名称“Phone”,我使用DOM API在Java中实现了以下实现。我的问题是代码的最后两行打印相同的结果。在一种情况下,我使用Element检索内容,而在另一种情况下,它由NodeList函数getNodeValue检索。

NodeList phoneNodeList = document.getElementsByTagName("Phone");
Node firstPhoneNode = phoneNodeList.item(0);
System.out.println (phoneNodeList.getLength());
Element phoneNodeElement = (Element) firstPhoneNode;
NodeList phoneList = phoneNodeElement.getElementsByTagName("Type");
Element phoneTypeElement = (Element) phoneList.item(0);
NodeList phoneType = phoneTypeElement.getChildNodes();
System.out.println ("NodeName : " + phoneTypeElement.getNodeName());
System.out.println ("Text Content : " + phoneTypeElement.getTextContent());
System.out.println ("Phone : " + phoneType.item(0).getNodeValue()); 

Phone标签实现在XML

中看起来像这样
<Phone>
<Type>work</Type>
<Value>2222</Value>
</Phone>

<Phone>
</Phone>

<Phone>
</Phone>

<Phone>
<Type>mobile</Type>
<Value>1111</Value>
</Phone>

1 个答案:

答案 0 :(得分:1)

<Type>元素中的文字本身是Node,类型为TEXT,其值为mobile。这就是DOM的工作原理。这个页面解释了一点:http://docs.oracle.com/javase/tutorial/jaxp/dom/when.html