Разница между setTextContent () и appendChild(текст)

при создании 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 ответов


из документации Element#setTextContent():

при настройке все возможные дочерние элементы этого узла могут быть удалены, и, если новая строка не пуста или не равна null, заменяется одним текстовым узлом, содержащим строку, для которой установлен этот атрибут.

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"));

appendChild()

метод добавляет узел после последнего дочернего узла указанного узла элемента.

setTextContent()

замените текстовое содержимое на это.