我正在尝试读取以下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!
然后我可以使用字符串解析函数来分离字符串,但我需要一个更清晰的解决方案。
任何可能避免额外字符串解析的建议改进?
谢谢!
答案 0 :(得分:2)
我对DOMDocument
的经验不多。但看起来你的xml小而简单,我建议使用simple 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!
)
)
)
)
)
我认为现在访问每个节点会容易得多。
答案 1 :(得分:0)
我在DOMDocument中遇到了类似的问题,似乎它无法从名为“param”的节点提供内容......
尝试将名称更改为“参数”,它将起作用
真实的故事