setTextContent()和appendChild(Text)之间的区别

时间:2013-02-28 04:58:45

标签: java xml dom

创建XML文档时,这两种向元素添加文本的方法有什么区别(如果有的话):

Element el = document.createElement("element");
el.setTextContent("This is the text content");

Element el = document.createElement("element");
Text txt = document.createTextNode("This is the text content");
el.appendChild(txt);

2 个答案:

答案 0 :(得分:8)

From the documentation for Element#setTextContent():

  

在设置时,此节点可能具有的任何子节点都将被删除,如果新字符串不为空或为null,则替换为包含此属性设置为的字符串的单个Text节点。

Element#appendChild()不会删除现有的子项(除非指定的子项已经在树中)。因此

el.setTextContent("This is the text content")

相当于在调用el.appendChild()

之前删除所有子项
for(Node n : el.getChildNodes())
{
    el.removeChild(n);
}
el.appendChild(document.createTextNode("This is the text content"));

答案 1 :(得分:2)

appendChild()

方法在指定元素节点的最后一个子节点之后添加一个节点。

setTextContent()

用这个替换文本内容。