Парсер XML PHP с использованием SimpleXML. Примеры
2 марта 2020 PHP
Существует несколько способов парсить XML-данные с использованием PHP, один из которых — SimpleXML. В предыдущей статье мы уже рассматривали, как парсить RSS ленты с помощью этой замечательной библиотеки. Библиотека входит в состав PHP начиная с 5 версии. Парсить и манипулировать данными из XML с ней довольно легко и просто.
Пример 1
Здесь мы показываем очень простой синтаксический анализ, используя текст XML, переданный с помощью simplexml_load_string
. Затем мы выводим объект, возвращаемый simplexml_load_string
, как показано ниже. Для загрузки из файла также существует функция simplexml_load_file
, пример simplexml_load_file
приведен в конце этого руководства.
<?php $xmlData=simplexml_load_string("<root><node>This is a node</node></root>"); echo var_dump($xmlData); ?>
Пример 2
Здесь мы покажем, как получить доступ к элементу внутри объекта, возвращаемого simplexml_load_string
. Это просто основные обозначения объектов.
<?php $xmlData=simplexml_load_string("<root><node>This is a node</node></root>"); echo $xmlData->node; ?>
Пример 3
Доступ к атрибуту:
<?php $xmlData=simplexml_load_string("<root><nodes><node1 exampleAttribute='sample attribute'>Node 1 Content</node1></nodes></root>"); echo "Node 1 content is ".$xmlData->nodes->node1; echo "Node 1 attribute is ".$xmlData->nodes->node1->attributes()->exampleAttribute; ?>
Пример 4
Итерирование атрибутов:
<?php $xmlData=simplexml_load_string("<root><node1 att1='ATT1' att2='ATT2'>Content</node1></root>"); foreach ($xmlData->node1->attributes() as $attributeName=>$attributeValue) { echo "Node 1 has ".$attributeName . " with the value of " . $attributeValue; } ?>
Пример 5
Создание XML: вы добавляете дочерние узлы и атрибуты в объект xml, используя addChild
и addAttributes
.
<?php $xmlData=simplexml_load_string("<xml></xml>"); // Добавление дочерних узлов $book1=$xmlData->addChild("book1"); $book2=$xmlData->addChild("book2"); // Добавление атрибутов $book1->addAttribute("title", "Book1Title"); $book2->addAttribute("title", "Book2Title"); $book1->addChild("author", "Jim"); $book2->addChild("author", "James"); ?>
Приведенный выше код создает XML, который выглядит следующим образом:
<xml> <book1 title="Book1Title"> <author>Jim</auhor> </book1> <book2 title="Book2Title"> <author>James</author> </book2> </xml>
<?php echo $xmlData->book1->attributes()->title. "n"; echo $xmlData->book2->attributes()->title. "n"; echo $xmlData->book1->author. "n"; echo $xmlData->book2->author. "n"; ?>
Пример 6
Создание XML Это тот же метод, что и в примере 5, но с использованием конструктора SimpleXMLElement. Конструктор принимает либо строку, либо URL:
<?php $xmlData=new SimpleXMLElement("<xml></xml>"); // Adding child nodes $book1=$xmlData->addChild("book1"); $book1->addAttribute("title", "Book1Title"); $book1->addChild("author", "Jim"); echo $book1->attributes()->title. "n"; echo $book1->author. "n"; ?>
В этом что-то есть и идея хорошая, согласен с Вами.