php5的simplexml对象

 

simplexml是php5新增的处理xml的对象,下面简要举例说明对象的各个属性和方法,已经简单处理xml文档的过程

simplexml_load_file(str file); 将一个xml文档载入一个simplexml对象中,此方法返回一个句柄

simplexml_load_string(str string);将一段xml文档载入一个simplexml对象中,此方法返回一个句柄

simplexml_import_dom(data) 该函数把一个dom节点转为simplexml对象,其中data为实用的DOM节点

$simplexml->addAttribute(name,value) 给simplexml对象元素添加一个属性,注意,是simplexml对象元素,不是simplexml对象句柄。

$simplexml->addChlid(name,value)给指定的XML节点添加一个子节点

$simplexml->asXML() 从SimpleXMLElement对象中以一个字符串的形式返回XML文档,可以当作保存xml文档来来用

$simplexml->attributes() 返回由simplexml对象元素节点的属性组成的数组,

<?

  $str='<tpl><tag name="cx,html" tt="dd" /><tg hh="123456" /></tpl>';

 $xml = simplexml_load_string($str);

if(!$xml) die('xml解析有错');

$xml = (array)($xml->tag->attributes());

print_r($xml);

?>

运行上面代码会打印出以个数组,Array ( [@attributes] => Array ( [name] => cx,html [tt] => ddd ) )

可见,$simplexml->attributes()得到的是一个xml元素节点的所有属性,不过被包含在一个[@attributes]数组中,所以要通过$xml = $xml['@attributes']来获得

$simplexml->Children() 返回simplexml对象元素节点的孩子组成的数组

$simplexml->__construct() 创建一个新的XML文档

$simplexml->getDocNamespaces() 该函数返回$simplexml对象定义的命名空间

$simplexml->getName() 返回$simplexml对象元素的名称,即标签名

$simplexml->getNamespaces() 返回$simplexml对象使用的命名空间

$simplexml->registerXpathNamespace()  该函数为下一次XPATH查询创建命名空间语境

$simplexml->xpath() 使用xpath的语法来解析一个Simplexml对象

实例代码1

<?xml version="1.0" encoding="gbk"?>
<LeapsoulXML>  
    <LeapsoulInfo>  
        <name>Leapsoul-PHP网站开发 </name>  
        <website>http://www.leapsoul.cn </website>  
        <description>分享PHP网站开发与建设的乐趣,教你如何建立网站 </description>
        <bloger>David </bloger>
        <date>2009-05-13 </date>
        <qq>QQ:154130270 </qq>
    </LeapsoulInfo>

    <LeapsoulInfo>  
        <name>Leapsoul-PHP网站开发 </name>
        <website>http://www.leapsoul.cn </website>
        <description>分享PHP网站开发与建设的乐趣,教你如何建立网站 </description>
        <bloger>David </bloger>
        <date>2009-05-13 </date>
        <qq>QQ:154130270 </qq>
    </LeapsoulInfo>
</LeapsoulXML>

实例代码2

1、$info = simplexml_load_file ( 'leapsoulcn.xml' ) ;
2、
3、 print_r ( $info ) ;
4、   
5、$name = $info -> LeapsoulInfo [ 0 ] -> name ;
6、   
7、 echo $name ;
8、
9、foreach ( $info -> LeapsoulInfo as $LeapsoulInfo )
10、{
11、   echo $LeapsoulInfo -> name . "<br />" ;
12、  echo $LeapsoulInfo -> website . "<br />" ;
13、  echo $LeapsoulInfo -> description . "<br />" ;
14、  echo $LeapsoulInfo -> bloger . "<br />" ;
15、  echo $LeapsoulInfo -> date . "<br />" ;
16、  echo $LeapsoulInfo -> qq . "<br />" ;
17、}

reach ( $info -> xpath ( '//name' ) as $value ) {  
    echo $value . '<br />' ;
}
   
foreach ( $info -> LeapsoulInfo [ 0 ] -> children ( ) as $value ) {  
    echo $value -> getName ( ) ;
    echo $value . '<br />' ;  
}

$info -> LeapsoulInfo [ 0 ] -> addChild ( 'msn' , 'MSN:davidfaithman@hotmail.com' ) ;
$info -> asXML ( 'leapsoulcn.xml' ) ;

 代码注释

第1行:simplexml_load_file:读取一个xml文档作为操作对象,可以读取本地或者远程xml文档;simplexml_load_string:读取一个xml字符串作为操作的对象

第3行:如果不清楚如何获取某个节点的信息,可用print_r函数打印输出查看具体的结构,simplexml解析返回的对象具有数组结构。

第5~8行:以对象方式读取某个XML文档节点信息,读取方式:句柄->节点元素名->子节点,如果相同的节点元素有多个,则以数组(array)方式读取

:由于simplexml解析返回的信息是UTF8格式的,如果网站使用的是GBK的,则需要转码,你可以使用iconv函数或者其他的utf8与gbk转换函数进行操作,如:$name = iconv(’utf-8′,’gbk’,$name);

第9~17行:以遍历的形式,读取所有元素下的子节点信息

第19~21行:simplexml的xpath函数是用来查询XML数据的,比如这里查询的是所有name节点的值

第23~26行:children函数是用来找寻某个特定节点下所有子节点的值。getName函数用来获得每个子节点的元素名称

第28~29行:addChild函数用来在某个特定节点下增加一个子节点;asXML函数对已做过改动的XML文档进行保存

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值