simplexml

SimpleXML

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-файлов. Выборку можно делать любую.




Добавить комментарий

Ваш e-mail не будет опубликован.