好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php中simplexml_load_string使用实例 - php高级应用

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高级应用的详细内容...

  阅读:37次