В этой главе мы изучим операцию замены узла в объекте XML DOM. Как мы знаем, все в DOM поддерживается в иерархической информационной единице, известной как узел, и заменяющий узел предоставляет другой способ обновления этих указанных узлов или текстового узла.
Ниже приведены два метода замены узлов.
- replaceChild ()
- replaceData ()
replaceChild ()
Метод replaceChild () заменяет указанный узел новым узлом.
Синтаксис
InsertData () имеет следующий синтаксис —
Node replaceChild(Node newChild, Node oldChild) throws DOMException
Куда,
-
newChild — это новый узел для добавления в дочерний список.
-
oldChild — это заменяемый узел в списке.
-
Этот метод возвращает замененный узел.
newChild — это новый узел для добавления в дочерний список.
oldChild — это заменяемый узел в списке.
Этот метод возвращает замененный узел.
пример
В следующем примере (replacenode_example.htm) выполняется синтаксический анализ XML-документа ( node.xml ) в объект XML DOM и замена указанного узла <FirstName> новым узлом <Name>.
<!DOCTYPE html> <html> <head> <script> function loadXMLDoc(filename) { if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else // code for IE5 and IE6 { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",filename,false); xhttp.send(); return xhttp.responseXML; } </script> </head> <body> <script> xmlDoc = loadXMLDoc("/dom/node.xml"); x = xmlDoc.documentElement; z = xmlDoc.getElementsByTagName("FirstName"); document.write("<b>Content of FirstName element before replace operation</b><br>"); for (i=0;i<z.length;i++) { document.write(z[i].childNodes[0].nodeValue); document.write("<br>"); } //create a Employee element, FirstName element and a text node newNode = xmlDoc.createElement("Employee"); newTitle = xmlDoc.createElement("Name"); newText = xmlDoc.createTextNode("MS Dhoni"); //add the text node to the title node, newTitle.appendChild(newText); //add the title node to the book node newNode.appendChild(newTitle); y = xmlDoc.getElementsByTagName("Employee")[0] //replace the first book node with the new node x.replaceChild(newNode,y); z = xmlDoc.getElementsByTagName("FirstName"); document.write("<b>Content of FirstName element after replace operation</b><br>"); for (i = 0;i<z.length;i++) { document.write(z[i].childNodes[0].nodeValue); document.write("<br>"); } </script> </body> </html>
выполнение
Сохраните этот файл как replacenode_example.htm на пути к серверу (этот файл и файл node.xml должны находиться на одном и том же пути на вашем сервере). Мы получим вывод, как показано ниже —
Content of FirstName element before replace operation Tanmay Taniya Tanisha Content of FirstName element after replace operation Taniya Tanisha
replaceData ()
Метод replaceData () заменяет символы, начинающиеся с указанного 16-разрядного смещения, указанной строкой.
Синтаксис
ReplaceData () имеет следующий синтаксис —
void replaceData(int offset, int count, java.lang.String arg) throws DOMException
куда
-
смещение — это смещение, с которого начинается замена.
-
count — это количество 16-битных блоков для замены. Если сумма смещения и счетчика превышает длину, то все 16-битные единицы до конца данных заменяются.
-
arg — строка DOMString, с которой необходимо заменить диапазон.
смещение — это смещение, с которого начинается замена.
count — это количество 16-битных блоков для замены. Если сумма смещения и счетчика превышает длину, то все 16-битные единицы до конца данных заменяются.
arg — строка DOMString, с которой необходимо заменить диапазон.
пример
В следующем примере ( replaceata_example.htm ) анализируется документ XML ( node.xml ) в объект XML DOM и заменяется его.
<!DOCTYPE html> <html> <head> <script> function loadXMLDoc(filename) { if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else // code for IE5 and IE6 { xhttp = new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",filename,false); xhttp.send(); return xhttp.responseXML; } </script> </head> <body> <script> xmlDoc = loadXMLDoc("/dom/node.xml"); x = xmlDoc.getElementsByTagName("ContactNo")[0].childNodes[0]; document.write("<b>ContactNo before replace operation:</b> "+x.nodeValue); x.replaceData(1,5,"9999999"); document.write("<br>"); document.write("<b>ContactNo after replace operation:</b> "+x.nodeValue); </script> </body> </html>
В приведенном выше примере —
-
x.replaceData (2,3, «999»); — Здесь x содержит текст указанного элемента <ContactNo>, текст которого заменяется новым текстом «9999999» , начиная с позиции 1 до длины 5 .
x.replaceData (2,3, «999»); — Здесь x содержит текст указанного элемента <ContactNo>, текст которого заменяется новым текстом «9999999» , начиная с позиции 1 до длины 5 .
выполнение
Сохраните этот файл как replaceata_example.htm на пути к серверу (этот файл и файл node.xml должны находиться на одном и том же пути на вашем сервере). Мы получим вывод, как показано ниже —