Парсер 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";
?>
В этом что-то есть и идея хорошая, согласен с Вами.