尝试使用PHP DOM读取XML节点 [英] Trying to read XML nodes using 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>正在转发到11个服务的P< / 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转发到11个服务!
然后我可以使用字符串解析函数来分离字符串,但是我需要一个更清洁的解决方案。
任何建议的改进,可能会避免额外的字符串解析?
谢谢!
我没有太多的经验与 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>消息< / name>< value>< string>正在转发到11个服务的P< / string>< / value>< / member>
< / struct>
& / value>
< / param>
< / params>
< / methodResponse>
;
$ xml = simplexml_load_string($ xmlString);
echo'< pre>';
print_r($ xml-> params-> param-> value);
echo'< / pre>';
?>
并获得
code> SimpleXMLElement Object
(
[struct] => SimpleXMLElement Object
(
[member] => Array
(
[ 0] => SimpleXMLElement Object
(
[name] => flerror
[value] => SimpleXMLElement对象
(
[boolean] => 0
)
)
[1] => SimpleXMLElement对象
(
[name] =>消息
[value] => SimpleXMLElement对象
(
[string] => PING被转发到11个服务!
)
)
)
)
)
pre>
我认为现在访问每个节点会更容易。
I'm trying to read the relevant nodes in the following XML string, to finally display:
flerror:0
Message from directory:Pings being forwarded to 11 services!
<?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>
I tried using:
$doc = new DOMDocument(); $doc->loadXML($xmlString); $value = $doc->getElementsByTagName("value"); $value = $value->item(0)->nodeValue;
and obtained:
<br>flerror0<br> messagePings being forwarded to 11 services!
I can then use string parsing functions to separate out the strings, but that I need a cleaner solution.
Any suggested improvements that will possibly avoid the additional string parsing?
Thanks!
解决方案I have not much experience with
DOMDocument
. But looks like your xml is small and simple, I would suggest to use simple xml. Here is what I have wrote<?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>'; ?>
And got
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! ) ) ) ) )
I think now it will be much easier to access every node.
这篇关于尝试使用PHP DOM读取XML节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!