XML DOM - Добавление узлов

Добавление узла - appendChild()

Метод appendChild() добавляет дочерний узел к существующему узлу.

Новый узел добавляется (присоединяется) после всех уже существующих дочерних узлов.

Примечание: Если местоположение узла имеет значение, то следует использовать метод insertBefore().

Следующий фрагмент кода создает элемент <edition> и добавляет его после последнего дочернего элемента первого элемента <book>:


newEle = xmlDoc.createElement("edition");

xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);

Объяснение примера:

  1. Предположим, что файл books.xml был загружен в переменную xmlDoc
  2. Создаем новый узел <edition>
  3. Добавляем этот узел в первый элемент <book>

Следующий фрагмент кода делает то же, что и предыдущий, кроме того, что новый элемент добавляется вместе со значением:


newEle = xmlDoc.createElement("edition");
newText=xmlDoc.createTextNode("first");
newEle.appendChild(newText);

xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);

Объяснение примера:

  1. Предположим, что файл books.xml был загружен в переменную xmlDoc
  2. Создаем новый узел <edition>
  3. Создаем новый текстовый узел "first"
  4. Добавляем текстовый узел к узлу <edition>
  5. Добавляем узел <edition> в элемент <book>

Вставка узла - insertBefore()

Метод insertBefore() вставляет узел перед указанным дочерним узлом.

Этот метод полезен, когда важно местоположение добавляемого узла:


newNode = xmlDoc.createElement("book");

x = xmlDoc.documentElement;
y = xmlDoc.getElementsByTagName("book")[3];

x.insertBefore(newNode,y);

Объяснение примера:

  1. Предположим, что файл books.xml был загружен в переменную xmlDoc
  2. Создаем новый узел элемента <book>
  3. Вставляем новый узел перед последним элементом <book>

Если второй параметр метода insertBefore() равен null, то новый узел будет добавлен после последнего существующего дочернего узла.

x.insertBefore(newNode, null) и x.appendChild(newNode) оба добавят новый дочерний узел к узлу "x".

Добавление нового атрибута

Метод setAttribute() устанавливает значение атрибута.


xmlDoc.getElementsByTagName('book')[0].setAttribute("edition","first");

Объяснение примера:

  1. Предположим, что файл books.xml был загружен в переменную xmlDoc
  2. Устанавливаем атрибуту "edition" значение "first" в первом элементе <book>.

Примечание: Не существует метода с названием addAttribute(). Метод setAttribute() создаст новый атрибут, если атрибут не существует. Если атрибут уже существует, метод setAttribute() перезапишет существующее значение.

Добавление текста в текстовый узел - insertData()

Метод insertData() вставляет данные в существующий текстовый узел.

Метод insertData() принимает два параметра:

  • offset – Позиция, куда будет вставлена строка (начинается с 0)
  • string – Вставляемая строка

Следующий фрагмент кода добавит строку "Easy " в текстовый узел первого элемента <title> загруженного XML документа:


xmlDoc.getElementsByTagName("title")[0].childNodes[0].insertData(0, "Easy ");