XML DOM - Получение значения узла

Для получения значения текстового узла используется свойство nodeValue.

Метод getAttribute() возвращает значение атрибута.

Получение значения элемента

В DOM абсолютно все - узлы. Узлы элементов не имеют текстового значения.

Текстовое значение узла элемента хранится в дочернем узле. Этот узел называется текстовым узлом.

Чтобы получить текстовое значение элемента, необходимо получить значение текстового узла элемента.

Метод getElementsByTagName

Метод getElementsByTagName() возвращает список узлов всех элементов с указанным именем тега в том же порядке, в каком они появляются в исходном документе.

Предположим, что файл books.xml был загружен в переменную xmlDoc.

Следующий код получает первый элемент <title>:


var x = xmlDoc.getElementsByTagName("title")[0];

Свойство childNodes

Свойство childNodes возвращает список дочерних узлов элемента.

Следующий код извлекает текстовый узел первого элемента <title>:


x = xmlDoc.getElementsByTagName("title")[0];
y = x.childNodes[0];

Свойство nodeValue

Свойство nodeValue возвращает текстовое значение текстового узла.

Следующий код извлекает текстовое значение текстового узла первого элемента <title>:


x = xmlDoc.getElementsByTagName("title")[0];
y = x.childNodes[0];
z = y.nodeValue;

Результат в переменной z: "Everyday Italian".

Полный пример


<!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>

Получение значения атрибута

В модели DOM атрибуты также являются узлами. Однако, в отличие от узлов элементов, узлы атрибутов имеют текстовые значения.

Чтобы получить значение атрибута, нужно получить его текстовое значение.

Это можно сделать с помощью метода getAttribute() или свойства nodeValue узла атрибута.

Получение значения атрибута - getAttribute()

Метод getAttribute() возвращает значение атрибута.

Следующий код извлекает текстовое значение атрибута "lang" первого элемента элемента <title>:


x = xmlDoc.getElementsByTagName("title")[0];
txt = x.getAttribute("lang");

Результат в переменной txt: "en".

Получение значения атрибута - getAttributeNode()

Метод getAttributeNode() возвращает узел атрибута.

Следующий код извлекает текстовое значение атрибута "lang" первого элемента <title>:


x = xmlDoc.getElementsByTagName("title")[0];
y = x.getAttributeNode("lang");
txt = y.nodeValue;

Результат в переменной txt: "en".