PHP: чтение значения узла XML в зависимости от значения параметра

У меня есть XML-файл, который содержит описание продукта на испанском и английском языках, вот пример:

<property>
<descriptions>
<description language="es"><text><![CDATA[Lorem ipsum Spanish description]]></text></description>
<description language="en"><text><![CDATA[Lorem ipsum English description]]></text></description>
</descriptions>
</property>

Я использую PHP-скрипт для обработки XML и импорта значений в базу данных. Вот как я получаю значение первого описания продукта:

$Spanish_Description= $property->descriptions->description[0]->text;

Однако в XML-файле для некоторых продуктов на первом месте стоит испанское описание, а для других продуктов — второе, поэтому я не могу полагаться на номер заказа узла.

Как я могу изменить свой код PHP, чтобы специально искать значение <description language="es"></description>?

0

Решение

Вы можете использовать xpath, или просто проверить на тот, который вы хотите ..

$language="en";
foreach ( $property->descriptions->description as $description )    {
if ( $description['language'] == $language )    {
echo "For:".$description['language'].'='.$description->text.PHP_EOL;
}
}

$text=$property->xpath("//description[@language='$language']/text")[0];
echo (string)$text;
0

Другие решения

это XPath Запрос на объект SimpleXML очень помогает с этим:

$nodes = $xml->xpath('//property[descriptions[description[@language="es"]]]');
$node = $nodes[0];
print_r($node);

Позволяет напрямую получить доступ к определенному описанию с атрибутом language="es"

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector