Свойства и методы XML DOM

Атрибуты и методы определяют программный интерфейс XML DOM.

Пример

Ниже приведен пример файла XML books.xml.

Функция loadXMLDoc()Расположен во внешнем JavaScript, используется для загрузки файла XML.

Функция loadXMLString()Расположен во внешнем JavaScript, используется для загрузки строки XML.

Загрузка и парсинг файла XML
Загрузка и парсинг строки XML

Программный интерфейс

DOM имитирует XML как серию интерфейсов узлов. Узлы можно访问 с помощью JavaScript или других языков программирования. В данном руководстве мы используем JavaScript.

Программный интерфейс DOM определен набором стандартных атрибутов и методов.

АтрибутыЧасто используется в виде «что такое что-то» (например, имя узла «book»).

МетодЧасто используется в формате "делать что-то с чем-то" (например, удалить узел "book").

Свойства XML DOM

Некоторые типичные свойства DOM:

  • x.nodeName - имя x
  • x.nodeValue - значение x
  • x.parentNode - родительский узел x
  • x.childNodes - подузлы x
  • x.attributes - узлы свойств x

Комментарий:В данном списке x - это объект узла.

Методы XML DOM

  • x.getElementsByTagName(name) -��取具有指定标签名称的所有元素
  • x.appendChild(node) - вставляет подузел в x
  • x.removeChild(node) - удаляет подузел из x

Комментарий:В данном списке x - это объект узла.

Пример

JavaScript-код для получения текста из элемента <title> в books.xml:

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

После выполнения этой строки значение txt сохраняется как "Harry Potter".

Объяснение:

  • xmlDoc - XML DOM, созданный анализатором
  • getElementsByTagName("title")[0] - Первый элемент <title>
  • childNodes[0] - Первый подузел элемента <title> (текстовый узел)
  • nodeValue - Значение узла (текст сам по себе)

В данном примере getElementsByTagName - это метод, а childNodes и nodeValue - это атрибуты.

Анализ файла XML - пример для всех браузеров

Этот фрагмент кода использует функцию loadXMLDoc для books.xml Загрузите анализатор XML и отображайте данные первого элемента book:

xmlDoc=loadXMLDoc("books.xml");
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

Вывод:

Harry Potter
J K. Rowling
2005

TIY

В данном примере мы используем childNodes[0] для каждого текстового узла, даже если у каждого элемента только один текстовый узел. Это связано с тем, что метод getElementsByTagName() всегда возвращает массив.

Анализ строки XML - пример для всех браузеров

Следующий код загружает и анализирует строку XML:

Этот фрагмент кода использует функцию loadXMLString для books.xml Загрузите анализатор XML и покажите данные первого book:

text="<bookstore>"
text=text+"<book>";
text=text+"<title>Harry Potter</title>";
text=text+"<author>J K. Rowling</author>";
text=text+"<year>2005</year>";
text=text+"</book>";
text=text+"</bookstore>";
xmlDoc=loadXMLString(text);
document.write(xmlDoc.getElementsByTagName("title"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("author"))
[0].childNodes[0].nodeValue);
document.write("<br />");
document.write(xmlDoc.getElementsByTagName("year"))
[0].childNodes[0].nodeValue);

Вывод:

Harry Potter
J K. Rowling
2005

TIY