Чтение SimpleXMLElement - PullRequest
       0

Чтение SimpleXMLElement

0 голосов
/ 02 апреля 2020

Я вызываю метод, который возвращает XML (SimpleXMLElement) в качестве ответа. Однако, как бы я ни пытался, я не могу прочитать переменную XML, переменная называется $ response. В приложении вы можете увидеть структуру переменной XML, которая отображается, когда я достигаю максимума. Структура переменной

Когда я преобразовал XML в строку, используя

> (string) $response

, я получил это:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<responseImport xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.fio.cz/schema/responseImport.xsd"><result><errorCode>1</errorCode><status>error</status><sums><sum id="EUR"><sumCredit>0</sumCredit><sumDebet>50</sumDebet></sum></sums></result><ordersDetails><detail id="1"><messages><message status="error" errorCode="2001">Message here</message></messages></detail></ordersDetails></responseImport>

Мне нужно получить код ошибки. Я пытался запросить значение, используя код:

$response->xml->result->errorCode;

$response->result->errorCode;

и многими другими способами, но никогда не получалось. Вы знаете, как я могу получить значение? Заранее спасибо!


ОБНОВЛЕНИЕ: Ни один из ответов на самом деле не работал, но в любом случае они были полезны. Благодаря вашим ответам я смог построить правильный код.

$xml = new SimpleXMLElement($response);
$errorCode = (string) $xml->result->errorCode[0];

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Это просто случай следования всем слоям данных для получения кода ошибки, поэтому

echo (string)$response->ordersDetails->detail->messages->message['errorCode'];

даст

2001
0 голосов
/ 03 апреля 2020

Попробуйте что-то вроде:

$xml = new SimpleXMLElement($response);
$result = $xml->xpath('//responseImport//ordersDetails//message[@status="error"]/@errorCode');
echo 'error code: ',$result[0],"\n";

Вывод:

error code: 2001
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...