Добавление узла - appendChild()
Метод appendChild() добавляет дочерний узел к существующему узлу.
Новый узел добавляется (присоединяется) после всех уже существующих дочерних узлов.
Примечание: Если местоположение узла имеет значение, то следует использовать метод insertBefore().
Следующий фрагмент кода создает элемент <edition> и добавляет его после последнего дочернего элемента первого элемента <book>:
newEle = xmlDoc.createElement("edition");
xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);
Объяснение примера:
- Предположим, что файл books.xml был загружен в переменную xmlDoc
- Создаем новый узел <edition>
- Добавляем этот узел в первый элемент <book>
Следующий фрагмент кода делает то же, что и предыдущий, кроме того, что новый элемент добавляется вместе со значением:
newEle = xmlDoc.createElement("edition");
newText=xmlDoc.createTextNode("first");
newEle.appendChild(newText);
xmlDoc.getElementsByTagName("book")[0].appendChild(newEle);
Объяснение примера:
- Предположим, что файл books.xml был загружен в переменную xmlDoc
- Создаем новый узел <edition>
- Создаем новый текстовый узел "first"
- Добавляем текстовый узел к узлу <edition>
- Добавляем узел <edition> в элемент <book>
Вставка узла - insertBefore()
Метод insertBefore() вставляет узел перед указанным дочерним узлом.
Этот метод полезен, когда важно местоположение добавляемого узла:
newNode = xmlDoc.createElement("book");
x = xmlDoc.documentElement;
y = xmlDoc.getElementsByTagName("book")[3];
x.insertBefore(newNode,y);
Объяснение примера:
- Предположим, что файл books.xml был загружен в переменную xmlDoc
- Создаем новый узел элемента <book>
- Вставляем новый узел перед последним элементом <book>
Если второй параметр метода insertBefore() равен null, то новый узел будет добавлен после последнего существующего дочернего узла.
x.insertBefore(newNode, null) и x.appendChild(newNode) оба добавят новый дочерний узел к узлу "x".
Добавление нового атрибута
Метод setAttribute() устанавливает значение атрибута.
xmlDoc.getElementsByTagName('book')[0].setAttribute("edition","first");
Объяснение примера:
- Предположим, что файл books.xml был загружен в переменную xmlDoc
- Устанавливаем атрибуту "edition" значение "first" в первом элементе <book>.
Примечание: Не существует метода с названием addAttribute(). Метод setAttribute() создаст новый атрибут, если атрибут не существует. Если атрибут уже существует, метод setAttribute() перезапишет существующее значение.
Добавление текста в текстовый узел - insertData()
Метод insertData() вставляет данные в существующий текстовый узел.
Метод insertData() принимает два параметра:
- offset – Позиция, куда будет вставлена строка (начинается с 0)
- string – Вставляемая строка
Следующий фрагмент кода добавит строку "Easy " в текстовый узел первого элемента <title> загруженного XML документа:
xmlDoc.getElementsByTagName("title")[0].childNodes[0].insertData(0, "Easy ");