blackdarthvader
@blackdarthvader
Только учусь кодить ^_^

Как пользоваться выбрать нужные элементы из xml c помощью xpath?

Доброго времени суток, есть следующий XML

<CurrencyRateListAnswer>
<Result>
<Content>
<Item FirstCode="USD" SecondCode="RUB">69.966015</Item>
<Item FirstCode="CNY" SecondCode="KZT">50.799100</Item>
<Item FirstCode="RUB" SecondCode="KZT">4.859019</Item>
<Item FirstCode="USD" SecondCode="KZT">323.777331</Item>
<Item FirstCode="RUB" SecondCode="CNY">0.091096</Item>
<Item FirstCode="USD" SecondCode="CNY">6.070173</Item>
</Content>
</Result>
</CurrencyRateListAnswer>


Мне нужно забрать эти данные 323.777331

Делаю так

$xmlstring=file_get_contents("ссылка на xml файл");
        $xml = simplexml_load_string($xmlstring);
        $res=$xml->xpath("//Item[@FirstCode='USD']");
        var_dump($res);


Но почему не работает и присылает мне
array(0) { }

Как решить эту проблему?
  • Вопрос задан
  • 611 просмотров
Пригласить эксперта
Ответы на вопрос 2
glebovgin
@glebovgin
Full Stack Web Developer
Указанный вами пример рабочий, правда я использовал simple_load_string, но сути это особо не меняет. На выходе будет массив из трех элементов, потому как с атрибутом FirstCode="USD" в вашей xml 3 элемента. Я бы предложил использовать более классический способ работы с xpath:

$xml = '<CurrencyRateListAnswer>
<Result>
<Content>
<Item FirstCode="USD" SecondCode="RUB">69.966015</Item>
<Item FirstCode="CNY" SecondCode="KZT">50.799100</Item>
<Item FirstCode="RUB" SecondCode="KZT">4.859019</Item>
<Item FirstCode="USD" SecondCode="KZT">323.777331</Item>
<Item FirstCode="RUB" SecondCode="CNY">0.091096</Item>
<Item FirstCode="USD" SecondCode="CNY">6.070173</Item>
</Content>
</Result>
</CurrencyRateListAnswer>';

$dom = new DOMDocument('UTF-8');
$dom->preserveWhiteSpace = false;
$dom->loadXML($xml);

$xpath = new DOMXPath($dom);
$query = $xpath->query('//Item[@FirstCode="USD" and @SecondCode="KZT"]');
echo $query->item(0)->nodeValue; // 323.777331


Если и этот заведомо рабочий код не работает, то надо проверять подключен ли модуль xpath.
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы