2016-01-11 3 views
1

Я работаю над небольшим приложением на PHP, которое должно получить некоторые данные из XML, чтобы рассчитать некоторые счета.выберите конкретную область в xml

У меня есть этот XML использовать: http://www.bnr.ro/files/xml/years/nbrfxrates2016.xml

Он уже возвращает мне массив, синтаксический анализ не является проблемой. Я не знаю, как отображать только данные с определенной даты. Предположим, я хочу использовать валюту с 1/5/2016. Как мне это сделать?

Существует также XML, доступный для каждого дня. Если я использую это, код выглядит так: var_dump($array['Body']['Cube']['Rate'][10]) например. Я не знаю, как выбрать тело с определенным атрибутом. В этом случае - дата.

ответ

0

Вы можете использовать селектор XPath, это позволяет довольно сложные запросы:

$xml = new SimpleXMLElement($string); 
$xml->registerXPathNamespace('a', 'http://www.bnr.ro/xsd'); 
$result = $xml->xpath('/a:DataSet/a:Body/a:Cube[@date="2016-01-05"]/a:Rate'); 
print_r($result); 
+1

Вы регистрируетесь префикс пространства имен, не используя его, как: '/ а: DataSet/а: Тело/а: Куб [@ дата = "2016-01-05"]/а: Rate'. – ThW

+0

@ThW Вы правы, я исправил запрос. [Демо здесь] (http://sandbox.onlinephpfunctions.com/code/c5b3c31bfd91c252c9a6a55cac964e8a3d452c20) – fafl

Смежные вопросы