Метод replaceChild() заменяет указанный узел.
Свойство nodeValue заменяет текст в текстовом узле.
Замена узла элемента
Чтобы заменить один узел элемента на другой, используется метод replaceChild().
В следующем фрагменте кода заменяется первый элемент <book>:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.documentElement;
//создаем элемент book, элемент title и текстовый узел
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");
//добавляем текстовый узел в узел title
newTitle.appendChild(newText);
//добавляем узел title в узел book
newNode.appendChild(newTitle);
y=xmlDoc.getElementsByTagName("book")[0]
//заменяем первый узел book новым узлом
x.replaceChild(newNode,y);
Объяснение примера:
- Загружаем файл books.xml в переменную xmlDoc
- Создаем новый узел элемента <book>
- Создаем новый узел элемента <title>
- Создаем новый текстовый узел с текстом "A Notebook"
- Присоединяем новый текстовый узел к новому узлу элементу <title>
- Присоединяем новый узел элемента <title> к новому узлу элементу <book>
- Заменяем первый узел элемента <book> на новый узел элемента <book>
Замена данных в текстовом узле
Метод replaceData() может использоваться для замены данных в текстовом узле.
Метод replaceData() принимает три параметра:
- offset – С какого символа начинать замену (смещение). Отсчитывается с нуля
- length – Сколько символов заменить
- string – Строка для вставки
Пример:
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.replaceData(0,8,"Easy");
Объяснение примера:
- Загружаем файл books.xml в переменную xmlDoc
- Получаем текстовый узел первого узла элемента <title>
- Используем метод replaceData(), чтобы заменить восемь первых символов текстового узла на строку "Easy"
Вместо этого можно использовать свойство nodeValue
Заменить данные в текстовом узле проще с помощью свойства nodeValue.
В следующем фрагменте кода заменяется значение текстового узла в первом элементе <title> на строку "Easy Italian":
xmlDoc=loadXMLDoc("books.xml");
x=xmlDoc.getElementsByTagName("title")[0].childNodes[0];
x.nodeValue="Easy Italian";
Объяснение примера:
- Загружаем файл books.xml в переменную xmlDoc
- Получаем текстовый узел первого узла элемента <title>
- Используем свойство nodeValue, чтобы заменить текст в текстовом узле
Подробнее об изменении значения узлом можно прочитать в главе "Изменение узлов".