getTextContent()
和getValue()
属性之间是否存在差异?
在下面的例子中,它将相同的内容打印到控制台中。
我已经发现getNodeValue()
和getValue
是相同的(根据http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Node.html#getNodeValue())。
XML:
<Request w="4.2">
代码:
getString("Request", rootElement);
和
void printAtt(String tagName, Element element) {
NodeList list = element.getElementsByTagName(tagName);
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
Element nodeElement = (Element) node;
Attr attribute = nodeElement.getAttributeNode("w");
System.out.println("ATTR NAME: " + attribute.getName());
System.out.println("ATTR TEXT CONTENT: " + attribute.getTextContent());
System.out.println("ATTR VALUE: " + attribute.getValue());
System.out.println("ATTR NODE VALUE: " + attribute.getNodeValue());
}
}
输出结果为:
ATTR NAME: w
ATTR TEXT CONTENT: 4.2
ATTR VALUE: 4.2
ATTR NODE VALUE: 4.2
答案 0 :(得分:2)
有一个至关重要的区别。 getTextContent()
将连接其节点和其后代(如果有)的所有文本内容,并返回值,而getNodeValue()
将返回其当前节点的值。
Javadoc声明,getNodeValue()
:
此节点的值,具体取决于其类型;见上表。 当它被定义为null时,设置它无效,包括if 该节点是只读的。
getTextContent()
:
此属性返回此节点及其的文本内容 后人。如果将其定义为null,则将其设置为无效。 在设置时,此节点可能具有的任何可能的子节点都将被删除, 如果新字符串不为空或为null,则替换为单个Text 包含此属性设置为的字符串的节点。在得到,没有 执行序列化,返回的字符串不包含任何内容 标记。不执行空格规范化并返回 string不包含元素内容中的空格(请参阅 属性Text.isElementContentWhitespace)。同样,在设置时,没有 解析也是执行,输入字符串被视为纯文本 内容。返回的字符串由此节点的文本内容组成 取决于其类型。
对于ATTRIBUTE_NODE
,两个函数的值是相同的,因为属性没有后代,因此您收到类似结果的原因。