时时商务社区

标题: php中simplexml_load_string使用实例分享 [打印本页]

作者: wx_pylelnL4    时间: 2018-2-14 06:00

            先用一段代码重现一下问题
乍一看,结果很让人费解:
[U]复制代码[/U] 代码如下:

hello
world

EOF;
$data = simplexml_load_string($string);
print_r($data);
print_r($data->foo);
?>
乍一看,结果很让人费解:
[U]复制代码[/U] 代码如下:
SimpleXMLElement Object
(
[foo] => Array
(
[0] => SimpleXMLElement Object
(
[bar] => hello
)
[1] => SimpleXMLElement Object
(
[bar] => world
)
)
)
SimpleXMLElement Object
(
[bar] => hello
)
明明print_r显示foo是一个有两个bar元素的数组,但是最后却仅仅显示了一个bar元素!
原因其实很简单,在如上所示simplexml_load_string的结果里,foo并不是数组,而是一个迭代对象!
可以这样确认:
[U]复制代码[/U] 代码如下:
foreach ($data->foo as $v) print_r($v);
foreach ($data->children() as $v) print_r($v);
看来,print_r或者var_dump之类的表象并不完全可信,自己多留心吧。
假如我们获取的XML数据如下:(可以使用curl、fsockopen等方式获取)
[U]复制代码[/U] 代码如下:
你好

Array;Array;Array;

  Haven't seen you for a long time. How are you?
  [tr]多日不见了,你好吗?[/tr]


  Hello! How are you?
  [tr]嘿,你好?[/tr]


  Hello, Brooks!How are you?
  [tr]喂,布鲁克斯!你好吗?[/tr]


  Hi, Barbara, how are you?
  [tr]嘿,芭芭拉,你好吗?[/tr]


  How are you? -Quite well, thank you.
  [tr]你好吗?-很好,谢谢你。[/tr]


经过simplexml_load_string得到:
[U]复制代码[/U] 代码如下:
SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [num] => 219
            [id] => 219
            [name] => 219
        )
    [key] => 你好
    [pos] => SimpleXMLElement Object
        (
        )
    [acceptation] => Array;Array;Array;
    [sent] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [orig] => Haven't seen you for a long time. How are you?
                    [trans] => 多日不见了,你好吗?
                )
            [1] => SimpleXMLElement Object
                (
                    [orig] => Hello! How are you?
                    [trans] => 嘿,你好?
                )
            [2] => SimpleXMLElement Object
                (
                    [orig] => Hello, Brooks!How are you?
                    [trans] => 喂,布鲁克斯!你好吗?
                )
            [3] => SimpleXMLElement Object
                (
                    [orig] => Hi, Barbara, how are you?
                    [trans] => 嘿,芭芭拉,你好吗?
                )
            [4] => SimpleXMLElement Object
                (
                    [orig] => How are you? -Quite well, thank you.
                    [trans] => 你好吗?-很好,谢谢你。
                )
        )
)
我们在PHP语言中可以用以下方法取得我们想要的值:
[U]复制代码[/U] 代码如下:
你好

Array;Array;Array;

  Haven't seen you for a long time. How are you?
  [tr]多日不见了,你好吗?[/tr]


  Hello! How are you?
  [tr]嘿,你好?[/tr]


  Hello, Brooks!How are you?
  [tr]喂,布鲁克斯!你好吗?[/tr]


  Hi, Barbara, how are you?
  [tr]嘿,芭芭拉,你好吗?[/tr]


  How are you? -Quite well, thank you.
  [tr]你好吗?-很好,谢谢你。[/tr]

XML;
$xmldata = simplexml_load_string($data);
header("Content-Type: text/html; charset=UTF-8");
print_r($xmldata);
echo "
".trim($xmldata->sent[0]->orig); //Haven't seen you for a long time. How are you?
echo "
".trim($xmldata->key); //你好
?>
            
            
您可能感兴趣的文章:
  • php下使用SimpleXML 处理XML 文件
  • PHP中simplexml_load_string函数使用说明
  • php simplexmlElement操作xml的命名空间实现代码
  • php的SimpleXML方法读写XML接口文件实例解析
  • php中simplexml_load_file函数用法实例
  • PHP中SimpleXML函数用法分析
  • PHP中使用SimpleXML检查XML文件结构实例
  • php+xml编程之SimpleXML的应用实例
            




    欢迎光临 时时商务社区 (http://bbs.4435.cn/) Powered by Discuz! X3.2