DOM XML - Reemplazar nodo
En este capítulo, estudiaremos sobre la operación de reemplazo de nodo en un objeto DOM XML. Como sabemos, todo en el DOM se mantiene en una unidad de información jerárquica conocida como nodo y el nodo de reemplazo proporciona otra forma de actualizar estos nodos especificados o un nodo de texto.
A continuación se muestran los dos métodos para reemplazar los nodos.
- replaceChild()
- replaceData()
replaceChild ()
El método replaceChild () reemplaza el nodo especificado con el nuevo nodo.
Sintaxis
InsertData () tiene la siguiente sintaxis:
Node replaceChild(Node newChild, Node oldChild) throws DOMException
Dónde,
newChild : es el nuevo nodo que se coloca en la lista de niños.
oldChild : es el nodo que se reemplaza en la lista.
Este método devuelve el nodo reemplazado.
Ejemplo
El siguiente ejemplo (replacenode_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y reemplaza el nodo especificado <FirstName> con el nuevo nodo <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>
Ejecución
Guarde este archivo como replacenode_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Obtendremos el resultado como se muestra a continuación:
Content of FirstName element before replace operation
Tanmay
Taniya
Tanisha
Content of FirstName element after replace operation
Taniya
Tanisha
replaceData ()
El método replaceData () reemplaza los caracteres que comienzan en el desplazamiento de unidad de 16 bits especificado con la cadena especificada.
Sintaxis
El replaceData () tiene la siguiente sintaxis:
void replaceData(int offset, int count, java.lang.String arg) throws DOMException
Dónde
desplazamiento : es el desplazamiento desde el cual comenzar a reemplazar.
recuento : es el número de unidades de 16 bits que se deben reemplazar. Si la suma del desplazamiento y el recuento excede la longitud, se reemplazan todas las unidades de 16 bits hasta el final de los datos.
arg : DOMString con el que se debe reemplazar el rango.
Ejemplo
El siguiente ejemplo (replacedata_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y lo reemplaza.
<!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>
En el ejemplo anterior:
x.replaceData (2,3, "999"); - Aquí x contiene el texto del elemento especificado <ContactNo> cuyo texto se reemplaza por el nuevo texto "9999999" , comenzando desde la posición 1 hasta la longitud de 5 .
Ejecución
Guarde este archivo como replacedata_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Obtendremos el resultado como se muestra a continuación:
ContactNo before replace operation: 1234567890
ContactNo after replace operation: 199999997890