xml — simplexml_load_string, отображающий пустой объект Переполнение стека

Я новичок в XML. У меня есть строковый ответ от API как:

<PPResponse Result="000" Key="110308f9-6b67-422b-9dee-9c9da77d8197">
<ResultMessage>Operation is succesfully completed</ResultMessage>
<UtilityInfo>
<UtilityCode>123</UtilityCode>
</UtilityInfo>
<BillInfo>
<Bill>
<BillNumber>110308f9-6b67-422b-9d13-1c9da77d8197</BillNumber>
<DueDate>2015-12-10T07:31:44</DueDate>
<Amount>100</Amount>
<ReserveInfo>test</ReserveInfo>
<BillParam>
<mask>4</mask>
<commission type="0" val="0.00" op="-" paysource="1" />
</BillParam>
<RefStan>123123123123</RefStan>
</Bill>
</BillInfo>
</PPResponse>

Я пытаюсь преобразовать его в объект XML, как это:

`

libxml_use_internal_errors(true);
$simple_xml = simplexml_load_string($response);
if ($simple_xml === false) {
echo "Failed loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
echo 'hi'; exit();
}
echo 'pass';    exit();`

Это отображает проход. Теперь ошибка в том, что когда я dd ($ simple_xml), я ничего не получаю как:

libxml_use_internal_errors(true);
$simple_xml = simplexml_load_string($response);
if ($simple_xml === false) {
echo "Failed loading XML\n";
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
echo 'hi'; exit();
}
dd($simple_xml)

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

Любая помощь будет высоко оценен. Это своего рода чрезвычайная ситуация.

0

Решение

Это прекрасно работает для меня:

libxml_use_internal_errors(true);

$xml = simplexml_load_string($response);
// var_dump($xml); this will output the xml object just fine

if ($xml !== false) {
echo "Successfuly loaded the XML" . PHP_EOL;
print "Message: " . $xml->ResultMessage . PHP_EOL;
print "Utility code: " . $xml->UtilityInfo->UtilityCode . PHP_EOL;
print "Bill Amount: " . $xml->BillInfo->Bill->Amount . PHP_EOL;
}
else{
echo "Failed loading the XML" . PHP_EOL;
foreach(libxml_get_errors() as $error) {
echo "\t", $error->message;
}
}

Будет отображать

Successfuly loaded the XML
Message: Operation is succesfully completed
Utility code: 78
Bill Amount: 0

используйте приведенный ниже код для проверки последовательности спецификации и удалите ее, если она существует

$bom = pack("CCC", 0xef, 0xbb, 0xbf);
if (0 === strncmp($response, $bom, 3)) {
echo "BOM detected - file is UTF-8" . PHP_EOL;
$response = substr($response, 3);
}
// or
$response = str_replace("\xEF\xBB\xBF",'',$reponse);
0

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

Других решений пока нет …

По вопросам рекламы [email protected]