DOM XML PHP

Внутренний парсер DOM позволяет обрабатывать документы XML в PHP.

Что такое DOM?

W3C DOM предоставляет стандартный набор объектов для документов HTML и XML, а также стандартные интерфейсы для доступа и работы с этими документами.

W3C DOM делится на不同的 части (Core, XML и HTML) и различные уровни (DOM Level 1/2/3):

  • Core DOM - определяет стандартный набор объектов для любых структурированных документов
  • XML DOM - определяет стандартный набор объектов для документов XML
  • HTML DOM - определяет стандартный набор объектов для документов HTML

Если вы хотите узнать больше о XML DOM, пожалуйста, посетите наш Учебник по XML DOM.

Парсер XML

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

Есть два основных типа парсеров XML:

  • Парсер на основе дерева:such a parser converts the XML document into a tree structure. It analyzes the entire document and provides an API to access elements in the tree, such as the Document Object Model (DOM).
  • Парсер на основе событий:represent the XML document as a series of events. When a specific event occurs, the parser calls a function to handle it.

Парсер DOM является древовидным парсером.

Просмотрите следующий фрагмент документа XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<from>Джон</from>

XML DOM представляет XML как древовидную структуру:

  • Уровень 1: документ XML
  • Уровень 2: корневой элемент: <from>
  • Уровень 3: текстовые элементы: "Джон"

Установка

Функции DOM XML являются частью ядра PHP. Эти функции могут быть использованы без установки.

Файл XML

В нашем примере мы будем использовать следующий файл XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Джордж</to>
<from>Джон</from>
<heading>Памятка</heading>
<body>Не забудьте встречу!</body>
</note>

Загрузка и вывод XML

Нам нужно инициализировать парсер XML, загрузить XML и вывести его:

Пример

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
print $xmlDoc->saveXML();
?>

Вывод кода:

Джордж Джон Памятка Не забудьте встречу!

Если вы посмотрите на исходный код в окне браузера, вы увидите следующее HTML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Джордж</to>
<from>Джон</from>
<heading>Памятка</heading>
<body>Не забудьте встречу!</body>
</note>

В примере выше был создан объект DOMDocument, и XML из "note.xml" был загружен в этот документальный объект.

Функция saveXML() помещает внутренний XML документ в строку, чтобы мы могли его выводить.

Цикл XML

Мы должны инициализировать XML парсер, загрузить XML и проецировать все элементы элемента <note>:

Пример

<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("note.xml");
$x = $xmlDoc->documentElement;
foreach ($x->childNodes AS $item)
  {
  print $item->nodeName . " = " . $item->nodeValue . "<br />";
  }
?>

Вывод кода:

#text = 
to = George
#text = 
from = John
#text = 
heading = Памятка
#text = 
body = Не забудьте встречу!
#text =

В примере, который вы видите, между каждым элементом есть пустые текстовые узлы.

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

Если вы хотите узнать больше о XML DOM, пожалуйста, посетите наш Учебник по XML DOM.