Добавление элемента XML DOM

Пример

Ниже приведен пример использования XML файла books.xml.

Функция loadXMLDoc()Расположен во внешнем JavaScript, используется для загрузки XML файлов.

Добавить узел после последнего подузла.
В этом примере используется метод appendChild() для добавления подузла к существующему узлу.
Добавление узла перед указанным подузлом
В этом примере используется метод insertBefore() для вставки узла перед указанным подузлом.
Добавление новой атрибуты
В этом примере используется метод setAttribute() для добавления новой атрибуты.
Добавление данных в узел текста
В этом примере используется метод insertData() для вставки данных в существующий узел текста.

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

Метод appendChild() добавляет подузел к существующему узлу.

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

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

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

xmlDoc=loadXMLDoc("books.xml");
newel = xmlDoc.createElement("edition");
x = xmlDoc.getElementsByTagName("book")[0];
x.appendChild(newel);

Пример объяснения:

  1. Используя loadXMLDoc() Добавить "books.xmlЗагрузить в xmlDoc
  2. Создать новый узел <edition>.
  3. Добавить этот узел к первому элементу <book>.

TIY

Цикл и добавление элемента к всем элементам <book>:TIY

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

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

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

xmlDoc=loadXMLDoc("books.xml");
newNode = xmlDoc.createElement("book");
x = xmlDoc.documentElement;
y = xmlDoc.getElementsByTagName("book")[3];
x.insertBefore(newNode, y);

Пример объяснения:

  1. Используя loadXMLDoc() Добавить "books.xmlЗагрузить в xmlDoc
  2. Создать новый узел элемента <book>.
  3. Вставить этот узел перед последним узлом элемента <book>.

TIY

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

x.insertBefore(newNode, null); и x.appendChild(newNode); можно добавить новый подузел к x.

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

Метод addAtribute() не существует.

Если атрибут не существует, то setAttribute() может создать новый атрибут:

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName('book');
x[0].setAttribute("edition","first");

Пример объяснения:

  1. Используя loadXMLDoc() Добавить "books.xmlЗагрузить в xmlDoc
  2. Установить (создать) значение атрибута "edition" первого элемента <book> в "first"

TIY

Примечание:Если атрибут уже существует, метод setAttribute() заменяет существующее значение.

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

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

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

  • offset - где начинать вставку символов (начиная с 0)
  • string - строка для вставки

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

xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.insertData(0,"Hello ");

TIY