好得很程序员自学网

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

php中simplexml_load_file()函数用法详细 - php函数

php中simplexml_load_file()函数用法详细

本文章详细的介绍了关于simplexml_load_file函数的用法,有需要了解的同学可以看看本函数详细实例.

表面看到的不一定是真的,file_get_contents或者curl远程抓一下,看其是否是一个有效的XML,特殊字符是会引起simplexml_load_file解析XML失败的,函数会报错.

定义和用法 :simplexml_load_file() 函数把 XML 文档载入对象中.

如果失败,则返回 false.

语法: simplexml_load_file(file,class,options,ns,is_prefix)

参数 描述 

file 必需。规定要使用的 XML 文档。 

class 可选。规定新对象的 class。 

options 可选。规定附加的 Libxml 参数。 

ns 可选。 

is_prefix 可选。

例子 1,代码如下:

<?php  // The file test.xml contains an XML document with a root element   // and at least an element /[root]/title.     if  ( file_exists ( 'test.xml' )) {       $xml  = simplexml_load_file( 'test.xml' );        var_dump( $xml );  }  else  {       exit ( 'Failed to open test.xml.' );  }  ?>     This script will display, on success:    SimpleXMLElement Object  (    [title] => Example Title    ...  ) 

看源代码及IE页面,没有问题,函数就是报错,后来想了个办法,file_get_contents一下,发现丫的在XML数据前面和后面分别有一串数字,于是XML无法顺利解析,这个分析起来还好些,而另一个就堪称头疼了.

XML格式如下:

< Result   value = "true"   message = "Success!" >      < Item   ID = "8861"   UserName = "30121740"   NickName = "&#x1A;ǒˇFEΙでァ"   Grade = "16"   Repute = "168"   Sex = "false"   WinCount = "138"   TotalCount = "229"   ConsortiaName = "圣域"   Rename = "false"   ConsortiaRename = "false"   EscapeCount = "0"   IsFirst = "31"   FightPower = "3032"   />   </ Result >  

初步分析是由于 里面NickName乱码导致,于是试验另一地址,代码如下:

< Result   value = "true"   message = "Success!" >      < Item   ID = "7"   UserName = "13792776"   NickName = "龙哥"   Grade = "1"   Repute = "313119"   Sex = "true"   WinCount = "0"   TotalCount = "0"   ConsortiaName = ""   Rename = "false"   ConsortiaRename = "false"   EscapeCount = "0"   IsFirst = "34"   FightPower = "0"   />   </ Result >  

没有问题,很显然是这个NickName乱码造成的,于是开始了漫长且无奈的沟通,不过人家合作方不认为自己的文件格式有问题.

返回类 SimpleXMLElement 的一个对象,该对象的属性包含 XML 文档中的数据,如果失败,则返回 false.

simplexml_load_file解析xml详细实例.

xml文档格式如下:

<? xml   version = "1.0"   encoding = "utf-8" ?>   < list >        < company > 武汉xxx公司 </ company >        < user >            < name > 张三 </ name >            < age   sex = "未知" > a </ age >            < height > 1 </ height >        </ user >        < user >            < name > 李四 </ name >            < age   sex = "女" > b </ age >            < height > 2 </ height >        </ user >        < user >            < name > 王五 </ name >            < age   sex = "男" > c </ age >            < height > 3 </ height >        </ user >        < town   parent = "0"   id = "1" > 台北 </ town >        < town   parent = "1"   id = "2" > 板桥 </ town >        < town   parent = "0"   id = "3" > 桃园 </ town >   </ list >  

php解析代码如下:

header( "content-type:text/html; charset=utf-8" );  //设置编码   $xml  = simplexml_load_file( 'a.xml' );   //载入xml文件 $lists和xml文件的根节点是一样的   echo   $xml ->company. "<br>" ;  echo   $xml ->town. "<br>id:" ;  echo   $xml ->town[ 'id' ]. "<br>parent:" ;  echo   $xml ->town[ 'parent' ]. "<br>" ;    echo   "<br>循环读取:<br>" ;  foreach ( $xml ->user  as   $users ){      //有多个user,取得的是数组,循环输出        echo   "-------------------<br>" ;       echo   "姓名:" . $users ->name. "<br>" ;       echo   "编号:" . $users ->age. "<br>" ;       echo   "性别:" . $users ->age[ 'sex' ]. "<br>" ;       echo   "序号:" . $users ->height. "<br>" ;  }  //开源代码phpfensi.com   echo   "<br>循环读取:<br>" ;  foreach ( $xml ->town  as   $towns ){      //有多个user,取得的是数组,循环输出        echo   "-------------------<br>" ;       echo   "id:" . $towns [ 'id' ]. "<br>" ;       echo   "归属:" . $towns [ 'parent' ]. "<br>" ;       echo   "地区:" . $towns . "<br>" ;  } 

定义和用法:

simplexml_load_file() 函数把 xml 文档载入对象中,如果失败,则返回 false.

语法: simplexml_load_file(file,class,options,ns,is_prefix)

参数 描述 

file 必需。规定要使用的 xml 文档。 

class 可选。规定新对象的 class。 

options 可选。规定附加的 libxml 参数。 

ns 可选。

is_prefix 可选。

查看更多关于php中simplexml_load_file()函数用法详细 - php函数的详细内容...

  阅读:59次