教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
  网站导航: 库库中文网 · 网站编程教程 · PHP教程 · PHP函数XML  

用php读取xml数据

教程推荐
『用php读取xml数据』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2006-3-23 

今天工作上碰到一个问题 由于我们的项目数据太少 所以需要从web search那边借调数据,他们只给我们提供了一个XML的接口。因此,我们需要把XML的数据转化成HTML呈现给大家。由于项目是基于PHP的,所以就摒弃了用js来读取XML选择了继续使用PHP。不过,我以前从来没有做过此类的尝试 所以找了很多网上资料同时参照了PHP的工作手册,发现在PHP4的环境下 用parser函数是一个比较好的选择(当然也可以用dom 但是需要对服务器重新进行配置 PHP5对dom支持得比较好)。

虽然以前没有接触过此类问题,但是还是很快就解决了,不过在解决和摸索的过程中发现网上关于此类的资料虽然不少,但是参差不齐,很多描述不是很详细,还是操作手册比较管用。

好了,言归正传:

parser是PHP内置的一个用来处理XML的解析器,它的工作由三个事件组成:起始标签、 读取数据、结束标签。

也就是说在对XML进行处理的时候每当遇到起始标签、数据和结束标签的时候函数会做相应的动作来完成对XML数据的转换。

PHP中对XML读取的相关函数的介绍:

引用:

--------------------------------------------------------------------------------

对象 XML解析函数 描述
元素 XML_set_element_handler() 元素的开始和结束
字符数据 XML_set_character_data_handler() 字符数据的开始
外部实体 XML_set_external_entity_ref_handler() 外部实体出现
未解析外部实体 XML_set_unparsed_entity_decl_handler() 未解析的外部实体出现
处理指令 XML_set_processing_instruction_handler() 处理指令的出现
记法声明 XML_set_notation_decl_handler() 记法声明的出现
默认 XML_set_default_handler() 其它没有指定处理函数的事件

--------------------------------------------------------------------------------

下面就给大家举一个小小的例子用parser函数来读取XML数据:

<?PHP
$parser = XML_parser_create(); //创建一个parser编辑器
XML_set_element_handler($parser, "startElement", "endElement");//设立标签触发时的相应函数 这里分别为startElement和endElenment
XML_set_character_data_handler($parser, "characterData");//设立数据读取时的相应函数
$XML_file="1.XML";//指定所要读取的XML文件,可以是url
$filehandler = fopen($XML_file, "r");//打开文件

 


while ($data = fread($filehandler, 4096))
{
    XML_parse($parser, $data, feof($filehandler));
}//每次取出4096个字节进行处理

fclose($filehandler);
XML_parser_free($parser);//关闭和释放parser解析器


$name=false;
$position=false;
function startElement($parser_instance, $element_name, $attrs)        //起始标签事件的函数
 {
   global $name,$position;  
   if($element_name=="NAME")
   {
   $name=true;
   $position=false;
   echo "名字:";
  }
  if($element_name=="POSITION")
   {$name=false;
   $position=true;
   echo "职位:";
  }
}

function characterData($parser_instance, $XML_data)                  //读取数据时的函数
{
   global $name,$position;
   if($position)
    echo $XML_data."<br>";
    if($name)
     echo $XML_data."<br>";
}

function endElement($parser_instance, $element_name)                 //结束标签事件的函数
{
 global $name,$position; 
$name=false;
$position=false; 
}

?>

XML文件代码如下:

<?XML version="1.0"?>
<employees>
<employee>
<name>张三</name>
<position age="45">经理</position>
</employee>
<employees>
<employee>
<name>李四</name>
<position age="45">助理</position>
</employee>
</employees>

这个程序的结果如下:

引用:
--------------------------------------------------------------------------------

名字:张三 职位:经理
名字:李四 职位:助理

--------------------------------------------------------------------------------

】【关闭窗口
  上一页:
  下一页:后面的文章暂时没有更新了,请多关注QQgb.com
 ·网站导航: 库库中文网 · 网站编程教程 · PHP教程 · PHP函数XML
PHP函数XML:相关文章
PHP函数XML点击榜
推荐教程用php读取xml数据
推荐教程用PHP读取和设计XML DOM
推荐教程PHP 选项及相关信息函数库
推荐教程用PHP与XML联手进行网站编制程序
推荐教程介绍几个 php4 里面非常有用地数
推荐教程俺错了。。是俺不好。。呜呜。。
推荐教程PHP里面地DOM XML函数--可惜无示
推荐教程写了个以交替背景色显示输出地函
推荐教程上传图片时生成缩微图象地函数
推荐教程用PHP完成动态产生XML文件以及从
PHOTOSHOP - 基础教程 抠图专题 蒙版专题 3DsMax 基础 设计实例 Maya设计实例
3D设计教程
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright ? 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL. 电脑硬件 电脑知识 教程学习
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光