Свойство firstChild XML DOM
Определение и использование
firstChild
Атрибут возвращает первый подузел выбранного элемента
Если выбранный узел не имеет подузлов, этот атрибут возвращает NULL.
Синтаксис
firstChild узла элемента
Внимание:Firefox и большинство других браузеров считают пробелы или отступы текстовыми узлами, в то время как Internet Explorer этого не делает. Поэтому в следующем примере используется функция для проверки типа узла первого подузла.
Узел элемента имеет nodeType равным 1, поэтому если первый подузел не является элементом, он переходит к следующему узлу и проверяет, является ли этот узел элементом. Это продолжается до тех пор, пока не будет найден первый подузел (он должен быть элементом). Таким образом, результат будет одинаковым во всех браузерах.
Совет:Для получения дополнительной информации о различиях между браузерами обратитесь к разделу DOM браузеров в учебнике XML DOM.
Пример
Следующий код загружает "books.xml" в xmlDoc и получает первый подузел:
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 get_firstchild(n) { var x = n.firstChild; while (x.nodeType != 1) { x = x.nextSibling; } return x; } function myFunction(xml) { var x, i, txt, firstNode, xmlDoc; xmlDoc = xml.responseXML; x = xmlDoc.documentElement; txt = ""; firstNode = get_firstchild(x); for (i = 0; i < firstNode.childNodes.length; i++) { if (firstNode.childNodes[i].nodeType == 1) { // Обработка только элементов txt += firstNode.childNodes[i].nodeName +"}}" " = " + firstNode.childNodes[i].childNodes[0].nodeValue + "<br>"; } } document.getElementById("demo").innerHTML = txt; }