Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

php读取xml的方法

[复制链接]
530761333 发表于 2010-10-14 19:00:23 | 显示全部楼层 |阅读模式
一,什么是xml,xml有什么用途
XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。
XML的用途很多,可以用来存储数据,可以用来做数据交换,为很多种应用软件提示数据等等。

二,php读取xml的方法
xml源文件
  1. <?xml version="1.0 encoding="UTF-8"?>   
  2. <humans>   
  3.   <zhangying>   
  4.    <name>张映</name>   
  5.    <sex>男</sex>   
  6.    <old>28</old>   
  7.   </zhangying>   
  8.   <tank>   
  9.    <name>tank</name>   
  10.    <sex>男</sex>   
  11.    <old>28</old>   
  12.   </tank>   
  13. </humans>  
复制代码
1)DOMDocument读取xml
  1. $doc = new DOMDocument();   
  2. $doc->load('person.xml');//读取xml文件   
  3.   
  4. $humans = $doc->getElementsByTagName('humans');//取得humans标签的对象数组   
  5. foreach ($humans as $human) {   
  6.         $names = $human->getElementsByTagName('name');//取得name的标签的对象数组   
  7.         $name = $names->item(0)->nodeValue;//取得node中的值,如<name> </name>   
  8.         $sexs = $human->getElementsByTagName('sex');   
  9.         $sex = $sexs->item(0)->nodeValue;   
  10.         $olds = $human->getElementsByTagName('old');   
  11.         $old = $olds->item(0)->nodeValue;   
  12.         echo "$name - $sex - $old\n";   
  13. }  
复制代码
2)simplexml读取xml
  1. $xml_array = simplexml_load_file('person.xml');//将XML中的数据,读取到数组对象中   
  2.   
  3. foreach ($xml_array as $tmp) {   
  4.         echo $tmp->name.'-'.$tmp->sex.'-'.$tmp->old.'<br>';   
  5. }  
复制代码
3)用php正则表达式来记取数据
  1. //读取数据   
  2. $f = fopen('person.xml', 'r');   
  3. while ($data = fread($f, 4096)) {   
  4.         $xml .= $data;   
  5. }   
  6. fclose($f);   
  7.   
  8. preg_match_all("/\<humans\>(.*?)\<\/humans\>/s", $xml, $humans);//匹配最外层标签里面的内容   
  9.   
  10. foreach ($humans[1] as $k => $human) {   
  11.         preg_match_all("/\<name\>(.*?)\<\/name\>/", $human, $name);   
  12.         preg_match_all( "/\<sex\>(.*?)\<\/sex\>/", $human, $sex);//匹配出性别   
  13.         preg_match_all( "/\<old\>(.*?)\<\/old\>/", $human, $old);   
  14. }   
  15.   
  16. foreach ($name[1] as $key => $val) {   
  17.         echo $val.' - '.$sex[$key][1].' - '.$old[$key][1].'<br>';   
  18. }  
复制代码
4)xmlreader来读取xml数据
  1. $reader = new XMLReader();   
  2. $reader->open('person.xml');//读取xml数据   
  3.   
  4. $i=1;   
  5. while ($reader->read()) {//是否读取   
  6.         if ($reader->nodeType == XMLReader::TEXT) {//判断node类型   
  7.                 if ($i % 3) {   
  8.                         echo $reader->value;//取得node的值   
  9.                 } else {   
  10.                         echo $reader->value."<br>" ;   
  11.                 }   
  12.                 $i++;   
  13.         }   
  14. }  
复制代码
aqq_cc 发表于 2010-10-15 01:55:17 | 显示全部楼层
学习了   顶起
回复

使用道具 举报

jm611 发表于 2010-10-15 16:55:38 | 显示全部楼层
顶我了。。。
回复

使用道具 举报

la367 发表于 2010-10-15 18:03:35 | 显示全部楼层
进来学习一下啊。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 10:46 , Processed in 0.022819 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表