DOM XML - Establecer nodo
En este capítulo, estudiaremos cómo cambiar los valores de los nodos en un objeto DOM XML. El valor del nodo se puede cambiar de la siguiente manera:
var value = node.nodeValue;
Si el nodo es un atributo , la variable de valor será el valor del atributo; si el nodo es un nodo de texto , será el contenido del texto; si el nodo es un elemento , será nulo .
Las siguientes secciones demostrarán la configuración del valor de nodo para cada tipo de nodo (atributo, nodo de texto y elemento).
El node.xml utilizado en todos los siguientes ejemplos es el siguiente:
<Company>
<Employee category = "Technical">
<FirstName>Tanmay</FirstName>
<LastName>Patil</LastName>
<ContactNo>1234567890</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Non-Technical">
<FirstName>Taniya</FirstName>
<LastName>Mishra</LastName>
<ContactNo>1234667898</ContactNo>
<Email>[email protected]</Email>
</Employee>
<Employee category = "Management">
<FirstName>Tanisha</FirstName>
<LastName>Sharma</LastName>
<ContactNo>1234562350</ContactNo>
<Email>[email protected]</Email>
</Employee>
</Company>
Cambiar el valor del nodo de texto
Cuando decimos el valor de cambio del elemento Node, nos referimos a editar el contenido de texto de un elemento (que también se llama nodo de texto ). El siguiente ejemplo demuestra cómo cambiar el nodo de texto de un elemento.
Ejemplo
El siguiente ejemplo (set_text_node_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y cambia el valor del nodo de texto de un elemento. En este caso, envíe un correo electrónico a cada empleado a [email protected] e imprima los valores.
<!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("Email");
for(i = 0;i<x.length;i++) {
x[i].childNodes[0].nodeValue = "[email protected]";
document.write(i+');
document.write(x[i].childNodes[0].nodeValue);
document.write('<br>');
}
</script>
</body>
</html>
Ejecución
Guarde este archivo como set_text_node_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). Recibirá el siguiente resultado:
0) [email protected]
1) [email protected]
2) [email protected]
Cambiar el valor del nodo de atributo
El siguiente ejemplo demuestra cómo cambiar el nodo de atributo de un elemento.
Ejemplo
El siguiente ejemplo (set_attribute_example.htm) analiza un documento XML ( node.xml ) en un objeto DOM XML y cambia el valor del nodo de atributo de un elemento. En este caso, la Categoría de cada Empleado para admin-0, admin-1, admin-2 respectivamente e imprima los valores.
<!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("Employee");
for(i = 0 ;i<x.length;i++){
newcategory = x[i].getAttributeNode('category');
newcategory.nodeValue = "admin-"+i;
document.write(i+');
document.write(x[i].getAttributeNode('category').nodeValue);
document.write('<br>');
}
</script>
</body>
</html>
Ejecución
Guarde este archivo como set_node_attribute_example.htm en la ruta del servidor (este archivo y node.xml deben estar en la misma ruta en su servidor). El resultado sería el siguiente:
0) admin-0
1) admin-1
2) admin-2