Последние учебники веб-разработки
×

XML Руководство

XML ГЛАВНАЯ XML Введение XML Как использовать XML дерево XML Синтаксис XML элементы XML Атрибуты XML Пространства имен XML дисплей XML XSLT XML XPath XML XLink XML Оценщик XML DTD XML схема XML сервер XML Приложения XML Примеры XML викторина XML сертификат

XML DOM

DOM вступление DOM Вершины DOM XMLHttpRequest DOM Доступ к DOM Узел информация DOM Список узлов DOM Пересекая DOM навигационный DOM Получить значения DOM Change Вершины DOM Remove Вершины DOM Replace Вершины DOM Create Вершины DOM Add Вершины DOM Clone Вершины DOM Примеры

DOM Справка

DOM Типы узлов DOM Узел DOM NodeList DOM NamedNodeMap DOM Документ DOM Элемент DOM Атрибут DOM Текст DOM CDATA DOM Комментарий DOM XMLHttpRequest DOM синтаксический анализатор

XML DTD

DTD вступление DTD Строительные блоки DTD элементы DTD Атрибуты DTD Элементы против Attr DTD юридические лица DTD Примеры

XSD Schema

XSD вступление XSD Как XSD <schema> XSD элементы XSD Атрибуты XSD ограничения

XSD Сложный

XSD элементы XSD пустой XSD Элементы только XSD Только текст XSD смешанный XSD индикаторы XSD <any> XSD <anyAttribute> XSD подмена XSD пример

XSD Data

XSD строка XSD Дата XSD числовой XSD Разное XSD Справка

Web Сервисы

XML Сервисы XML WSDL XML SOAP XML RDF XML RSS

 

XML DOM - Перемещение по Узлов


Узлы можно перемещаться с помощью узла связи.

×

заголовок


Перемещение DOM узлов

Доступ узлов в дереве узлов через связи между узлами, часто называют "navigating nodes" .

В XML DOM, узел отношения определяются как свойства к узлам:

  • parentNode
  • childNodes
  • firstChild
  • lastChild
  • nextSibling
  • previousSibling

На следующем рисунке показана часть дерева узлов и взаимосвязи между узлами в books.xml :

Узел дерева


DOM - родительский узел

Все узлы имеют ровно один родительский узел. Следующий код переходит к родительскому узлу <book> :

пример

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    var x = xmlDoc.getElementsByTagName("book")[0];
    document.getElementById("demo").innerHTML = x.parentNode.nodeName;
}
Попробуй сам "

Объяснение примера:

  1. Load " books.xml " в xmlDoc
  2. Получить первый <book> элемент
  3. Вывести имя узла родительского узла "x"

Избегайте пустых текстовых узлов

Firefox, а также некоторые другие браузеры, будут относиться пустые бело-пробелы или новые строки как текстовые узлы, Internet Explorer не будет.

Это создает проблему при использовании свойства: FirstChild, LastChild, NextSibling, PreviousSibling.

Чтобы избежать навигации пустые текстовые узлы (пробелы и новой строки символов между узлами элементов), мы используем функцию, которая проверяет тип узла:

function get_nextSibling(n) {
    var y = n.nextSibling;
    while (y.nodeType! = 1) {
        y = y.nextSibling;
    }
    return y;
}

Выше функция позволяет использовать get_nextSibling( node ) вместо свойства node .nextSibling.

Код пояснил:

Элемент узлы типа 1. Если узел родственный не является узлом элемента, он переходит к следующему узлов, пока узел элемента не найден. Таким образом, результат будет таким же, как в Internet Explorer и Firefox.


Получить первый дочерний элемент

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

пример

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
    var x = get_firstChild(xmlDoc.getElementsByTagName("book")[0]);
    document.getElementById("demo").innerHTML = x.nodeName;
}

//check if the first node is an element node
function get_firstChild(n) {
    var y = n.firstChild;
    while (y.nodeType != 1) {
        y = y.nextSibling;
    }
    return y;
}
</script>

</body>
</html>

Вывод:

title
Попробуй сам "

Объяснение примера:

  1. Load " books.xml " в xmlDoc
  2. Используйте функцию get_firstChild на первом <book> узел элемента , чтобы получить первый дочерний узел , который является узлом элемента
  3. Вывести имя узла первого дочернего узла, который является узлом элемента

Примеры

Еще примеры

lastChild()
В этом примере используется lastChild() метод и пользовательскую функцию , чтобы получить последний дочерний узел узла

nextSibling()
В этом примере используется nextSibling() метод и пользовательскую функцию , чтобы получить следующий родственный узел узла

previousSibling()
В этом примере используется previousSibling() метод и пользовательскую функцию , чтобы получить предыдущий родственный узел узла