XML DOM Obtener valores de nodo
La propiedad nodeValue se usa para obtener el valor de texto de un nodo.
El método getAttribute() devuelve el valor de un atributo.
Obtener el valor de un elemento
En el DOM, todo es un nodo. Los nodos de elemento no tienen un valor de texto.
El valor de texto de un nodo de elemento se almacena en un nodo secundario. Este nodo se denomina nodo de texto.
Para recuperar el valor de texto de un elemento, debe recuperar el valor del nodo de texto de los elementos.
El método getElementsByTagName
El método getElementsByTagName() devuelve una lista de nodos de todos los elementos , con el nombre de etiqueta especificado, en el mismo orden en que aparecen en el documento de origen.
Supongamos que se ha cargado " books.xml " en xmlDoc .
Este código recupera el primer elemento <title>:
var x = xmlDoc.getElementsByTagName("title")[0];
La propiedad ChildNodes
La propiedad childNodes devuelve una lista de los nodos secundarios de un elemento .
El siguiente código recupera el nodo de texto del primer elemento <title>:
x = xmlDoc.getElementsByTagName("title")[0];
y = x.childNodes[0];
La propiedad nodeValue
La propiedad nodeValue devuelve el valor de texto de un nodo de texto .
El siguiente código recupera el valor de texto del nodo de texto del primer elemento <title>:
Ejemplo
x = xmlDoc.getElementsByTagName("title")[0];
y = x.childNodes[0];
z = y.nodeValue;
Resultado en z: "Italiano cotidiano"
Ejemplo completo
Ejemplo
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.open("GET",
"books.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
var x = xmlDoc.getElementsByTagName('title')[0];
var y =
x.childNodes[0];
document.getElementById("demo").innerHTML = y.nodeValue;
}
</script>
</body>
</html>
Recorra todos los elementos <title>:
Obtener el valor de un atributo
En el DOM, los atributos son nodos. A diferencia de los nodos de elementos, los nodos de atributos tienen valores de texto.
La forma de obtener el valor de un atributo es obtener su valor de texto.
Esto se puede hacer usando el método getAttribute() o usando la propiedad nodeValue del nodo de atributo.
Obtener un valor de atributo - getAttribute()
El método getAttribute() devuelve el valor de un atributo .
El siguiente código recupera el valor de texto del atributo "lang" del primer elemento <title>:
Ejemplo
x = xmlDoc.getElementsByTagName("title")[0];
txt = x.getAttribute("lang");
Resultado en txt: "es"
Recorra todos los elementos <book> y obtenga sus atributos de "categoría":
Obtener un valor de atributo - getAttributeNode()
El método getAttributeNode() devuelve un nodo de atributo .
El siguiente código recupera el valor de texto del atributo "lang" del primer elemento <title>:
Ejemplo
x = xmlDoc.getElementsByTagName("title")[0];
y = x.getAttributeNode("lang");
txt = y.nodeValue;
Resultado en txt = "en"
Recorra todos los elementos <book> y obtenga sus atributos de "categoría":