php中simplexml_load_string使用实例
在php中simplexml_load_string() 函数把 XML 字符串载入对象中,下面我来给大家介绍几个简单实例的同时也介绍在使用simplexml_load_string的一些需要注意的事项.
先用一段代码重现一下问题,乍一看,结果很让人费解,代码如下:
<?php $string = <<<EOF <data> <foo><bar>hello</bar></foo> <foo><bar>world</bar></foo> </data> EOF; $data = simplexml_load_string( $string ); print_r( $data ); print_r( $data ->foo); ?> SimpleXMLElement Object ( [foo] => Array ( [0] => SimpleXMLElement Object ( [bar] => hello ) [1] => SimpleXMLElement Object ( [bar] => world ) ) //开源代码phpfensi.com ) SimpleXMLElement Object ( [bar] => hello )明明print_r显示foo是一个有两个bar元素的数组,但是最后却仅仅显示了一个bar元素,原因其实很简单,在如上所示simplexml_load_string的结果里,foo并不是数组,而是一个迭代对象.
可以这样确认,代码如下:
foreach ($data->foo as $v) print_r($v);
foreach ($data->children() as $v) print_r($v);
看来,print_r或者var_dump之类的表象并不完全可信,假如我们获取的XML数据如下,可以使用curl、fsockopen等方式获取,代码如下:
<? xml version = "1.0" encoding = "UTF-8" ?> < dict num = "219" id = "219" name = "219" > < key > 你好 </ key > < pos > </ pos > < acceptation > Array;Array;Array; </ acceptation > < sent > < orig > Haven't seen you for a long time. How are you? </ orig > < trans > 多日不见了,你好吗? </ trans > </ sent > < sent > < orig > Hello! How are you? </ orig > < trans > 嘿,你好? </ trans > </ sent > < sent > < orig > Hello, Brooks!How are you? </ orig > < trans > 喂,布鲁克斯!你好吗? </ trans > </ sent > < sent > < orig > Hi, Barbara, how are you? </ orig > < trans > 嘿,芭芭拉,你好吗? </ trans > </ sent > < sent > < orig > How are you? -Quite well, thank you. </ orig > < trans > 你好吗?-很好,谢谢你。 </ trans > </ sent > </ dict >经过simplexml_load_string得到如下代码:
SimpleXMLElement Object ( [@attributes] = > Array ( [num] = > 219 [id] = > 219 [name] = > 219 ) [key] = > 你好www.phpfensi.com [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语言中可以用以下方法取得我们想要的值,代码如下:
<?php $data = <<<XML <?xml version= "1.0" encoding= "UTF-8" ?> <dict num= "219" id= "219" name= "219" > <key>你好</key> <pos></pos> <acceptation>Array;Array;Array;</acceptation> <sent> <orig>Haven't seen you for a long time. How are you?</orig> <trans>多日不见了,你好吗?</trans> </sent> <sent> <orig>Hello! How are you?</orig> <trans>嘿,你好?</trans> </sent> <sent> <orig>Hello, Brooks!How are you?</orig> <trans>喂,布鲁克斯!你好吗?</trans> </sent> <sent> <orig>Hi, Barbara, how are you?</orig> <trans>嘿,芭芭拉,你好吗?</trans> </sent> <sent> <orig>How are you? -Quite well, thank you.</orig> <trans>你好吗?-很好,谢谢你。</trans> </sent> </dict> XML; $xmldata = simplexml_load_string( $data ); header( "Content-Type: text/html; charset=UTF-8" ); print_r( $xmldata ); echo "<br />" .trim( $xmldata ->sent[0]->orig); //Haven't seen you for a long time. How are you? echo "<br />" .trim( $xmldata ->key); //你好 ?>查看更多关于php中simplexml_load_string使用实例 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30075