首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML中TextContent与属性值之间的差异

XML中TextContent与属性值之间的差异
EN

Stack Overflow用户
提问于 2015-06-22 16:36:25
回答 1查看 2.8K关注 0票数 2

属性的getTextContent()getValue()之间有区别吗?

在下面的情况下,它会在控制台中打印相同的内容。我已经发现getNodeValue()getValue是一样的(根据http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/Node.html#getNodeValue()的说法)。

XML:

代码语言:javascript
复制
<Request w="4.2">

代码:

代码语言:javascript
复制
getString("Request", rootElement);

代码语言:javascript
复制
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());
        }
}

产出如下:

代码语言:javascript
复制
ATTR NAME: w
ATTR TEXT CONTENT: 4.2
ATTR VALUE: 4.2
ATTR NODE VALUE: 4.2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-22 16:42:26

有一个重要的区别。getTextContent()将连接其节点及其后代(如果有的话)的所有文本内容,并返回值,而getNodeValue()将返回其当前节点的值。

Javadoc状态,getNodeValue()

此节点的值,取决于其类型;请参见上表。当它被定义为null时,设置它没有任何效果,包括如果节点是只读的。

getTextContent()

此属性返回此节点及其后代的文本内容。当它被定义为null时,设置它没有效果。在设置时,删除该节点可能具有的任何子节点,如果新字符串不是空或空,则替换为包含此属性设置为的字符串的单个文本节点。获取时,不执行序列化,返回的字符串不包含任何标记。不执行空白规范化,返回的字符串不包含元素内容中的空格(请参见属性Text.isElementContentWhitespace)。类似地,在设置时,也不执行解析,输入字符串被视为纯文本内容。返回的字符串由此节点的文本内容组成,具体取决于其类型。

对于一个ATTRIBUTE_NODE,这两个函数的值是相同的,因为属性没有后代,因此您要接收类似的结果。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30985296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档