php

Использование xpath () в PHP

Использование xpath () в PHP
XML-документ используется для хранения небольшого количества данных, и иногда требуется прочитать конкретное содержимое XML-документа на основе значения пути с помощью PHP-скрипта. Функция xpath () используется для анализа содержимого XML-документа. Эту функцию можно использовать, используя simplexml_load_file () функции или путем создания объекта SimpleXMLElement класс. Функцию xpath () можно использовать для чтения конкретных значений узла XML, показанных в этом руководстве.

Синтаксис:

Синтаксис функции xpath () приведен ниже.

массив xpath (строка $ path)

Эта функция имеет один аргумент, который принимает значение пути, и если путь существует в любом узле XML-документа, то значение узла будет возвращено в виде массива. Различные варианты использования этой функции описаны в следующей части этого руководства.

Создать XML-документ:

Создайте файл XML с именем продукты.xml со следующим содержимым в том месте, где будет создан файл PHP для анализа этого файла.




MN-56345
DELL
15-дюймовый монитор Dell
700


HD-34278
SAMSUNG
Жесткий диск Samsung 1 ТБ
520


MS-67457
LOGITECH
Беспроводная мышь Logitech
100


MN-76453
HP
14-дюймовый монитор HP
750

Использование simplexml_load_file () функция:

Функция xpath () с объектом, созданным функцией simplexml_load_file (), была показана в этой части этого руководства.

Пример-1: чтение конкретных значений узла XML

В следующем примере показано, как прочитать содержимое конкретных значений узлов из XML-документа путем определения пути к функции xpath (). Переменная объекта, $ xml создается для чтения конкретных значений узлов продукты.xml файл. '/ ПРОДУКТЫ / ТОВАР / БРЕНД' используется в xpath () для чтения всех значений узла BRAND. '/ ПРОДУКТЫ / ПРОДУКТ' используется в xpath () для чтения всех значений дочерних узлов ПРОДУКТ узлы. для каждого цикл используется для печати значений НАЗВАНИЕ а также ЦЕНА узлы.

// Создаем объект для чтения XML-файла
$ xml = simplexml_load_file ('продукты.xml ');
// Ищем все значения узлов BRAND
$ brand = $ xml-> xpath ('/ ПРОДУКТЫ / ПРОДУКТ / БРЕНД');
// Распечатываем значения массива
эхо "

Список торговых марок:

";
foreach ($ brand as $ name)
echo "$ name
";

// Поиск по всем значениям узлов PRODUCT
$ products = $ xml-> xpath ('/ ПРОДУКТЫ / ПРОДУКТ');
эхо "

Список наименований товаров и цен:

";
эхо "";
эхо "";
// Распечатываем значения массива
foreach ($ products as $ product)
эхо "";

эхо "
ИмяЦена
$ product-> NAME $$ продукт-> ЦЕНА
";
?>

Выход:

Следующий вывод появится после запуска скрипта с сервера.

Пример-2: считывание конкретных значений узла XML в зависимости от условия

В следующем примере показано, как читать конкретные значения узлов в зависимости от условия с помощью функции xpath (). Значение пути, '/ ТОВАРЫ / ТОВАР [ЦЕНА> 600]', будет искать значения всех дочерних узлов ПРОДУКТ узел, где значение ЦЕНА узел больше 600. для каждого цикл используется для печати значений НАЗВАНИЕ а также ЦЕНА узлы.

// Создаем объект для чтения XML-файла
$ xml = simplexml_load_file ('продукты.xml ');
// Ищем товары с ценой больше 600
$ products = $ xml-> xpath ('/ ПРОДУКТЫ / ПРОДУКТ [ЦЕНА> 600]');
эхо "

Список наименований и цен товаров, где цена больше 600:

";
эхо "";
эхо "";
// Распечатываем значения массива
foreach ($ products as $ product)
эхо "";

эхо "
ИмяЦена
$ product-> NAME $$ продукт-> ЦЕНА
";
?>

Выход:

Следующий вывод появится после запуска скрипта с сервера.

Пример-3: считывание конкретных значений узла XML на основе атрибута

В следующем примере показано, как читать конкретные значения узлов на основе значений атрибутов конкретного узла XML-документа с помощью функции xpath (). Значение пути, '/ ПРОДУКТЫ / ПРОДУКТ [@ category = ”Монитор”]' будет искать значения всех дочерних узлов продукт узел, где значение атрибута категории Монитор. для каждого цикл используется для печати значений НАЗВАНИЕ БРЕНДА, а также ЦЕНА узлы.

// Создаем объект для чтения XML-файла
$ xml = simplexml_load_file ('продукты.xml ');
// Поиск продуктов, для которых значение атрибута çategory равно 'Monitor'
$ products = $ xml-> xpath ('/ PRODUCTS / PRODUCT [@ category = "Monitor"]');
эхо "

Список товарных знаков, наименований и цен в зависимости от категории (Монитор):

";
эхо "";
эхо "";
// Распечатываем значения массива
foreach ($ products as $ product)
эхо "";

эхо "
МаркаИмяЦена
$ product-> БРЕНД$ product-> NAME $$ продукт-> ЦЕНА
";
?>

Выход:

Следующий вывод появится после запуска скрипта с сервера.

Использование SimpleXMLElement класс:

Использование функции xpath () при создании объекта класса SimpleXMLElement показано в этой части этого руководства.

Пример-4: Использование xpath () путем определения содержимого XML в переменной

В следующем примере показано, как читать значения узлов XML-документа, объявленные в переменной, а не в файле. XML-контент хранится в $ xml_data Переменная. «/ Клиенты / покупатель» используется в качестве значения аргумента функции xpath () для чтения всех значений дочерних узлов клиент узел. Далее для каждого цикл используется для печати значений название узел. «/ Клиенты / покупатель [@ Department = 'HR']» используется в качестве значения аргумента другой функции xpath () для чтения всех значений дочерних узлов клиентского узла, где значение отделение атрибут HR. Следующий, по каждому цикл используется для печати значений электронное письмо узел.

$ xml_data = <<

Мкр. Махбуб
[электронная почта защищена]


Фархана Заман
[электронная почта защищена]


XML;
// Определяем объект для чтения XML-данных
$ xml = новый SimpleXMLElement ($ xml_data);
// Определяем путь для чтения всех данных клиентов
$ customers = $ xml-> xpath ("/ клиенты / покупатель");
// Распечатываем имена клиентов
эхо "

Список имен клиентов:

";
foreach ($ customers как $ customer)
echo "$ customer-> имя
";

// Определяем путь для чтения всех данных о клиентах отдела кадров
$ customers = $ xml-> xpath ("/ customers / customer [@ Department = 'HR']");
// Распечатываем электронную почту клиентов
эхо "

Электронная почта клиента отдела кадров:

";
foreach ($ customers как $ customer)
echo "$ customer-> электронная почта
";

?>

Выход:

Следующий вывод появится после запуска скрипта с сервера.

Заключение:

Два разных способа использования функции xpath () для чтения значений узлов XML-документа на основе определенного пути или пути с условием или пути со значением атрибута были объяснены в этом руководстве с использованием нескольких примеров.

Порты коммерческих игровых движков с открытым исходным кодом
Бесплатные игры с открытым исходным кодом и кроссплатформенные версии игрового движка можно использовать для игры как в старые, так и в некоторые из с...
Лучшие игры с командной строкой для Linux
Командная строка - не только ваш главный союзник при использовании Linux - она ​​также может быть источником развлечений, потому что вы можете использ...
Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...