Home php教程 php手册 php中simplexml_load_string使用实例

php中simplexml_load_string使用实例

May 25, 2016 pm 04:42 PM

在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);  
 
?>
Copy after login
SimpleXMLElement Object  
(  
[foo] => Array  
(  
[0] => SimpleXMLElement Object  
(  
[bar] => hello  
)  
[1] => SimpleXMLElement Object  
(  
[bar] => world  
)  
)
)  
SimpleXMLElement Object  
(  
[bar] => hello  
)
Copy after login

明明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);
Copy after login

看来,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>
Copy after login

经过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] => 你好吗?-很好,谢谢你。 
) 
 
) 
 
)
Copy after login

我们在PHP语言中可以用以下方法取得我们想要的值,代码如下:

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

   


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)