尝试使用PHP DOM读取XML节点 [英] Trying to read XML nodes using PHP DOM

查看:108
本文介绍了尝试使用PHP DOM读取XML节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试阅读以下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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆