Примеры работы с xPath
Если Вы читаете данную статью, то наверное уже слышали про язык запросов xPath. А если все-таки не слышали, то xPath — это язык запросов к элементам XML-документа (стандарт консорциума W3C). С помощью указанного языка запросов можно легко реализовать навигацию по DOM в XML. Проще говоря, xPath использует более компактный синтаксис, который отличается от принятого в XML.
Описывать более подробно про язык xPath не имеет смысла, т.к. в интернете Вы найдете множество литературы на данную тему. Мне же хочется рассмотреть различные примеры работы с данным языком запросов.
Кстати, если Вы еще не поняли или не знали, то можно работать с HTML-документом как с объектом DOM. Например, недавно я писал парсер для своих нужд, который собирал некоторую информацию с сайта, далее ее сохранял в текстовые файлы.
Примечание. В PHP от версии 5 содержится класс DOMXPath (поддержка xPath 1.0), в котором как раз реализована работа с DOM.
Итак, перейдем к разбору примеров работы с xPath.
Это наши тестовые данные XML-документа.
<magazine> <book> <title>Learning PHP, MySQL and JavaScript With jQuery, CSS and HTML5</title> <author>Робин Никсон</author> <price>1158 руб.</price> <content> <rating>4.3</rating> <description>The fully revised, updated and extended 4th edition of the hugely popular web development book - includes CSS, HTML5, jQuery and the mysqli extension.</description> </content> </book> <journal> <title>PHP World</title> <author>Anton Bekon</author> <price>412 руб.</price> </journal> <book> <title>PHP. Быстрый старт</title> <author>Каллум Хопкинс</author> <price>348 руб.</price> <content> <rating>3.5</rating> <description>Все, что нужно знать о PHP в одной книге!</description> </content> </book> <book> <title>Modern PHP: New Features and Good Practices</title> <author>Джош Локхарт</author> <price>834 руб.</price> <content> <rating>5</rating> <description>PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online.</description> </content> </book> </magazine>
Запрос: //book
Результат:
<book> <title>Learning PHP, MySQL and JavaScript With jQuery, CSS and HTML5</title> <author>Робин Никсон</author> <price>1158 руб.</price> <content> <rating>4.3</rating> <description>The fully revised, updated and extended 4th edition of the hugely popular web development book : includes CSS, HTML5, jQuery and the mysqli extension.</description> </content> </book> <book> <title>PHP. Быстрый старт</title> <author>Каллум Хопкинс</author> <price>348 руб.</price> <content> <rating>3.5</rating> <description>Все, что нужно знать о PHP в одной книге!</description> </content> </book> <book> <title>Modern PHP: New Features and Good Practices</title> <author>Джош Локхарт</author> <price>834 руб.</price> <content> <rating>5</rating> <description>PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online.</description> </content> </book>
Здесь получены все узлы с именем <book>.
Запрос: //book[2]
<book> <title>PHP. Быстрый старт</title> <author>Каллум Хопкинс</author> <price>348 руб.</price> <content> <rating>3.5</rating> <description>Все, что нужно знать о PHP в одной книге!</description> </content> </book>
Здесь получен только второй узел <book>.