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

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 траверс узел дерева


Пересекая средства Перебор или путешествие через дерево узлов.


Обход узла дерева

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

Это называется "Traversing the node tree"

В приведенном ниже примере перебирает все дочерние узлы <книги>, и отображает их имена и значения:

пример

<!DOCTYPE html>
<html>
<body>

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

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Вывод:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005
Попробуй сам "

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

  1. Загрузите XML-строку в xmlDoc
  2. Получить дочерние узлы корневого элемента
  3. Для каждого дочернего узла, выходного имени узла и значение узла текстового узла

Браузер Различия в DOM Парсинг

Все современные браузеры поддерживают спецификации W3C DOM.

Тем не менее, есть некоторые различия между браузерами. Одним из важных отличий является:

  • Образом они обрабатывают бело-пространства и новые линии

DOM - Пробелы и новые линии

XML часто содержит новую строку или символы пробелов, между узлами. Это часто случается, когда документ редактируется с помощью простого редактора как Блокнот.

Следующий пример (edited by Notepad) под (new line) (edited by Notepad) содержит CR / LF (new line) между каждой линией и двумя пробелами перед каждым дочерним узлом:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

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

В следующем примере будет выводить число дочерних узлов корневой элемент (of books.xml ) имеет. IE9 и более ранних версий будет выводить 4 дочерние узлы, в то время как IE10 и более поздних версий, а также другие браузеры вывода 9 дочерних узлов:

пример

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}
Попробуй сам "

PCDATA - Успешно разобран символьных данных

XML парсеры обычно разобрать весь текст в документе XML.

Когда XML-элемент анализируется, текст между тегами XML также анализируется:

<message>This text is also parsed</message>

Анализатор делает это потому , что XML - элементы могут содержать другие элементы, как в этом примере, где <name> элемент содержит два элемента (first and last) :

<name><first>Bill</first><last>Gates</last></name>

и анализатор будет разбить его на суб-элементы, как это:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Разбираемые символьных данных (PCDATA) это термин , используемый о текстовых данных , которые будут обрабатываться с помощью XML - анализатором.


CDATA - (Unparsed) символов данных

Термин CDATA используется о текстовых данных, которые не должны быть разобрано в XML-анализатором.

Символы , такие как "<" и "&" являются незаконными в элементах XML.

"<" Будет генерировать ошибку , потому что анализатор интерпретирует его как начало нового элемента.

"&" Будет генерировать ошибку , потому что анализатор интерпретирует его как начало сущности характера.

Какой - то текст, как код JavaScript, содержит много "<" или "&" символов. Чтобы избежать ошибок в коде сценария может быть определен как CDATA.

Все внутри секции CDATA игнорируется анализатором.

Секция CDATA начинается с " <![CDATA[ " and ends with " ]]> " :

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

В приведенном выше примере, все, что внутри секции CDATA игнорируется анализатором.

Notes on CDATA sections:

Секция CDATA не может содержать строку "]]>" . секции Уплотненный CDATA не допускаются.

"]]>" , Который отмечает конец секции CDATA не может содержать пробелы или разрывы строк.