属性的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发布于 2015-06-22 16:42:26
有一个重要的区别。getTextContent()将连接其节点和及其后代(如果有的话)的所有文本内容,并返回值,而getNodeValue()将返回其当前节点的值。
Javadoc状态,getNodeValue()
此节点的值,取决于其类型;请参见上表。当它被定义为null时,设置它没有任何效果,包括如果节点是只读的。
getTextContent()
此属性返回此节点及其后代的文本内容。当它被定义为null时,设置它没有效果。在设置时,删除该节点可能具有的任何子节点,如果新字符串不是空或空,则替换为包含此属性设置为的字符串的单个文本节点。获取时,不执行序列化,返回的字符串不包含任何标记。不执行空白规范化,返回的字符串不包含元素内容中的空格(请参见属性Text.isElementContentWhitespace)。类似地,在设置时,也不执行解析,输入字符串被视为纯文本内容。返回的字符串由此节点的文本内容组成,具体取决于其类型。
对于一个ATTRIBUTE_NODE,这两个函数的值是相同的,因为属性没有后代,因此您要接收类似的结果。
https://stackoverflow.com/questions/30985296
复制相似问题