Подсчет узлов с помощью xpath и count

1

У меня есть следующий код:

<?php
$xmlString = '
        <SHOP xmlns="http://www.example.com/ns/offer/1.0">
            <SHOPITEM>
                <ID>1</ID>
                <PRODUCT>T-shirt</PRODUCT>
                <PRICE>19,22</PRICE>
            </SHOPITEM>
            <SHOPITEM>
                <ID>2</ID>
                <PRODUCT>Trousers</PRODUCT>
                <PRICE>87,54</PRICE>
            </SHOPITEM>
        </SHOP>';
$xml = simplexml_load_string($xmlString);
$x_s_products = $xml->xpath("/SHOP/SHOPITEM");
$cnt_x_products = count($x_s_products);
echo $cnt_x_products;
?>

Проблема в том, что $cnt_x_products равно 0. Но это не так. Если я удалю атрибут xmlns, все будет в порядке. Но у меня должен быть этот атрибут. Спасибо за ваш совет.

  • 0
    php.net/manual/en/domxpath.registernamespace.php ?
  • 0
    @MarcB Как это решает мою проблему? Это не возвращает мне правильное количество узлов SHOPITEM.
Показать ещё 1 комментарий
Теги:
xpath
count

1 ответ

2
Лучший ответ

Когда вы используете namespcae, вы должны зарегистрировать это пространство имен:

$xml->registerXPathNamespace('n', 'http://www.example.com/ns/offer/1.0');

теперь это работает:

$x_s_products = $xml->xpath("//n:SHOPITEM");
$cnt_x_products = count($x_s_products);
echo $cnt_x_products;

выходы 2.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню