Heim  >  Artikel  >  php教程  >  php中simplexml_load_string使用实例

php中simplexml_load_string使用实例

WBOY
WBOYOriginal
2016-05-25 16:42:031047Durchsuche

在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  
)  
)
)  
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&#39;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.phprm.com 
[pos] => SimpleXMLElement Object 
( 
) 
 
[acceptation] => Array;Array;Array; 
[sent] => Array 
( 
[0] => SimpleXMLElement Object 
( 
[orig] => Haven&#39;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语言中可以用以下方法取得我们想要的值,代码如下:

".trim($xmldata->sent[0]->orig); //Haven't seen you for a long time. How are you? 
echo "
".trim($xmldata->key); //你好

   


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn