gpt4 book ai didi

PHP4和PHP5版本下解析XML文档的操作方法实例分析

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP4和PHP5版本下解析XML文档的操作方法实例分析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了PHP4和PHP5版本下解析XML文档的操作方法。分享给大家供大家参考,具体如下:

在PHP网站开发与建设过程中,时常会碰到需要对XML文档进行解析,PHP4版本自带了XML解析器(sax),PHP5版本增加了SimpleXML(基于dom)的XML扩展,对XML的解析更是非常方便,今天和大家分享下在不同环境下对XML文档进行解析的方法.

XML文档 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<? xml version = "1.0" encoding = "gbk" ?>
< LeapsoulXML >
< LeapsoulInfo >
< name >Leapsoul-PHP网站开发</ name >
< website >http://www.zzvips.com</ 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.zzvips.com</ website >
< description >分享PHP网站开发与建设的乐趣,教你如何建立网站</ description >
< bloger >David</ bloger >
< date >2009-05-13</ date >
< qq >QQ:154130270</ qq >
</ LeapsoulInfo >
</ LeapsoulXML >

PHP5版本下SimpleXML的使用方法 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$info =simplexml_load_file( 'leapsoulcn.xml' );
print_r( $info );
$name = $info ->LeapsoulInfo[0]->name;
echo $name ;
foreach ( $info ->LeapsoulInfoas $LeapsoulInfo )
{
echo $LeapsoulInfo ->name. "<br />" ;
echo $LeapsoulInfo ->website. "<br />" ;
echo $LeapsoulInfo ->description. "<br />" ;
echo $LeapsoulInfo ->bloger. "<br />" ;
echo $LeapsoulInfo -> date . "<br />" ;
echo $LeapsoulInfo ->qq. "<br />" ;
}
foreach ( $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文档进行保存 。

点击查看更多SimpleXML函数说明.

PHP4版本自带的XML函数解析方法 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function doStartElement( $xmlParser , $name , $attr )
{
  //对开始元素的处理
}
function doEndElement( $xmlParser , $name )
{
  //对结尾元素的处理
}
function doStringData( $xmlParser , $data )
{
  //对元素间的字符数据的处理
}
$xmlObj = xml_parser_create( "UTF-8" );
xml_set_element_handler( $xmlObj , "doStartElement" , "doEndElement" );
xml_set_character_data_handler( $xmlObj , "doStringData" );
xml_parse( $xmlObj , file_get_contents ( "leapsoulcn.xml" ));
xml_parser_free( $xmlObj );

代码注释 。

第1~15行:定义开始元素,结尾元素以及元素间字符数据的处理函数 第16行:建立一个新的XML解析器并返回可被其它XML函数使用的资源句柄,输入默认编码方式为 “ISO-8859-1”。同时,支持的编码方式还有“UTF-8”和 “US-ASCII”,输出数据编码方式是和xml_parser_create函数处定义相一致。 第18行:建立起始和终止元素处理器 第20行:建立字符数据处理器,处理元素之间的相关数据 注:XML语法解析器不会加上或者去掉任何空格,空格的取舍将由开发者自己决定。 第22行:启动解析器xml_parse函数第二个参数是字符型的,所以需要读取相关的XML文档信息,此处我用的是file_get_contents函数,本地远程都可行,当然你也可以使用fopen函数 第24行:XML解析完成后,释放解析器占用的内存 。

自带的XML函数解析思路 。

第一步:自定义开始元素,结尾元素以及元素间字符数据的处理函数; 第二步:建立一个XML解析器; 第三步:建立起始和终止元素处理器; 第四步:建立字符数据处理器,处理元素之间的相关数据; 第五步:启动解析器; 第六步:XML解析完成后,释放解析器占用的内存.

总结:

总的来说PHP自带的XML解析器使用起来相当繁琐,需要有较强的逻辑,而且如果XML文档结构不同,元素、字符等3个函数需要重新定义,而在PHP5版本增加了SimpleXML扩展后,XML解析起来非常简单,当然如果你需要进行更复杂的XML文档解析操作,你也可以下载安装并使用libxml,功能相当强.

希望本文所述对大家PHP程序设计有所帮助.

最后此篇关于PHP4和PHP5版本下解析XML文档的操作方法实例分析的文章就讲到这里了,如果你想了解更多关于PHP4和PHP5版本下解析XML文档的操作方法实例分析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com