SimpleXML — это персональная разработка php-разработчиков. На мой взгляд, это самый лучший парсер для чтения xml-файлов. А для записи файлов — лучше DOM. Изначально, когда появился SimpleXML, он был только для чтения. Потом добавили возможность изменения текста, добавление элемента. Но добавление здесь достаточно примитивное: элемент добавляется только в конец, нельзя добавить сразу несколько элементов.
Суть работы SimpleXML парсера: подаем на вход наш xml-файл, это файл конвертируется в объект, и все элементы файла становятся свойствами этого объекта.
SimpleXML, принципы работы
//Конвертируем XML-файл в объект $sxml = simplexml_load_file("catalog.xml"); //Вывод названия первой книги echo $sxml->book[0]->title; //Изменение автора второй книги $sxml->book[1]->author = "Вася Пупкин"; //Конвертируем объект в XML $xmlContent = $sxml->asXML();
В строке №1 получаем объект $sxml —> автоматом все элементы стали свойствами. Теперь, чтобы добраться до title любой книги, можно обратиться так — см. стока №4. Для изменения свойства (например, author) — см. строку №6. Чтобы изменения свойств вступили в силу, надо объект конвертировать обратно в файл — см. строку №8.
У элементов xml-документа могут быть атрибуты. Как получить их значение? См. пример ниже:
<book> <title id=1, a1=b2>PHP</title> </book> $attrs = $sxml->book[0]->title->attributes(); //получим список всех атрибутов var_dump($attrs); //выведем все атрибуты echo $sxml->book[0]->title['a1']; //выведем значение конкретного атрибута
Мы можем загрузить не только файл, но и строку. См. пример ниже:
$sxml = <<<LABEL <book> <title>PHP</title> <author>Zeev Suraski</author> </book> LABEL; //Конвертируем XML-строку в объект $sxml = simplexml_load_string($sxml);
У нас есть строка (строка №4). Загрузим эту строку (строка №8).
В среде SimpleXML есть язык xPath — это язык выборки для работы с xml-файлами. В нем есть понятие ‘осей’, т.е выборка происходит по осям.
//начало кода см.в самом первом примере $titles = $sxml->xPath("/catalog/book/titles"); //выберет все titles,которые лежат согласно пути в скобках
Язык xPath очень мощный при выборке из xml-файлов. Выборку можно делать любую.