Попытка чтения XML-узлов с использованием PHP DOM

Я пытаюсь прочитать соответствующие узлы в следующей строке XML, чтобы в итоге отобразить:

flerror: 0

Сообщение из каталога: Pings пересылаются в 11 сервисов!

<?xml version="1.0"?> <methodResponse> <params> <param> <value> <struct> <member><name>flerror</name><value><boolean>0</boolean></value></member> <member><name>message</name><value><string>Pings being forwarded to 11 services!</string></value></member> </struct> </value> </param> </params> </methodResponse> 

Я пробовал использовать:

 $doc = new DOMDocument(); $doc->loadXML($xmlString); $value = $doc->getElementsByTagName("value"); $value = $value->item(0)->nodeValue; 

и получили:

 <br>flerror0<br> messagePings being forwarded to 11 services! 

Затем я могу использовать функции синтаксического анализа для выделения строк, но мне нужно более чистое решение.

Любые предлагаемые улучшения, которые могут избежать дополнительного синтаксического анализа строк?

Благодаря!

Solutions Collecting From Web of "Попытка чтения XML-узлов с использованием PHP DOM"

У меня мало опыта работы с DOMDocument . Но похоже, что ваш xml небольшой и простой, я бы предложил использовать простой xml . Вот что я написал

 <?php $xmlString = "<?xml version=\"1.0\"?> <methodResponse> <params> <param> <value> <struct> <member><name>flerror</name><value><boolean>0</boolean></value></member> <member><name>message</name><value><string>Pings being forwarded to 11 services!</string></value></member> </struct> </value> </param> </params> </methodResponse> "; $xml = simplexml_load_string($xmlString); echo '<pre>'; print_r($xml->params->param->value); echo '</pre>'; ?> 

И получил

 SimpleXMLElement Object ( [struct] => SimpleXMLElement Object ( [member] => Array ( [0] => SimpleXMLElement Object ( [name] => flerror [value] => SimpleXMLElement Object ( [boolean] => 0 ) ) [1] => SimpleXMLElement Object ( [name] => message [value] => SimpleXMLElement Object ( [string] => Pings being forwarded to 11 services! ) ) ) ) ) 

Я думаю, теперь будет намного легче получить доступ к каждому узлу.

У меня была аналогичная проблема с DOMDocument, и кажется, что он не может передать контент из узла с именем «param» …

Попробуйте изменить имя на «параметр», оно будет работать

Правдивая история