Замена узла XML элемента, замена данных в текстовом узле и альтернативный способ замены текста – использование свойства nodeValue

Рубрика: DOM - Объектная Модель Документа

Приветствую, уважаемые читатели блога okITgo.ru! Сегодня мы поговорим о свойствах и методах DOM замены значений узлов XML.

Например, метод replaceChild() заменяет указанный узел XML.

А свойство nodeValue заменяет текст в текстовом узле.


Попробуйте Сами – Примеры

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

Замена узла элемента
Этот пример использует replaceChild() для замены первого узла <book>.

Замена данных в текстовом узле
Данный пример использует свойство nodeValue для замены данных в текстовом узле.


Замена Узла Элемента

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

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

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.documentElement;

//создание элемента книги, элемента заголовка и текстового узла
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");

//добавление текстового узла к узлу заголовка
newTitle.appendChild(newText);
//добавление узла заголовка к узлу книги
newNode.appendChild(newTitle);

y=xmlDoc.getElementsByTagName("book")[0]
/замена первого узла книги новым узлом
x.replaceChild(newNode,y);

Попробуйте сами »

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

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

Замена Данных в Текстовом Узле

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

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

  • смещение (offset) – Где начать замену символов. Значение смещения начинается с нуля
  • длина (length) – Сколько символов заменить
  • строка (string) – Строка для вставки

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];

x.replaceData(8,49,”как Лечебное Средство”);

Попробуйте сами »

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

  1. Загружаем "books.xml" в xmlDoc с помощью loadXMLDoc()
  2. Получаем текстовый узел первого узла элемента <title>
  3. Используем метод replaceData для замены 49 символов из текстового узла, начиная с 8-го, на строку "как Лечебное Средство"

Альтернативный Способ Замены Текста – Использование Свойства nodeValue

Проще заменить данные в текстовом узле, используя свойство nodeValue.

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

Пример

xmlDoc=loadXMLDoc("books.xml");

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];

x.nodeValue="Самогон как Лечебное Средство";

Попробуйте сами »

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

  1. Загружаем "books.xml" в xmlDoc посредством loadXMLDoc()
  2. Получаем текстовый узел первого узла элемента <title>
  3. Используем свойство nodeValue для изменения текста в текстовом узле

Вы найдете дополнительную информацию по модификации значений узлов в статье об изменении узлов. Спасибо за внимание! До новых встреч на страницах сайта okITgo.ru.