Для получения значения текстового узла используется свойство 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".