php解析xml方法实例详解


Posted in PHP onMay 12, 2015

本文以实例形式详细讲述了php解析xml方法。分享给大家供大家参考。具体分析如下:

books.xml文件如下:

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
 <book category="children">
 <title lang="en">Harry Potter</title>
 <author>J K. Rowling</author>
 <year>2005</year>
 <price>29.99</price>
 </book>
 <book category="cooking">
 <title lang="en">Everyday Italian</title>
 <author>Giada De Laurentiis</author>
 <year>2005</year>
 <price>30.00</price>
 </book>
 <book category="web" cover="paperback">
 <title lang="en">Learning XML</title>
 <author>Erik T. Ray</author>
 <year>2003</year>
 <price>39.95</price>
 </book>
</bookstore>

1、DOM解析XML

<?php
 //创建一个DOMDocument对象
 $doc=new DOMDocument();
 //加载XML文件
 $doc->load("books.xml");
 //获取所有的book标签
 $bookDom=$doc->getElementsByTagName("book");
 foreach($bookDom as $book){
  $title = $book->getElementsByTagName("title")->item(0)->nodeValue;
  $author = $book->getElementsByTagName("author")->item(0)->nodeValue;
  $year = $book->getElementsByTagName("year")->item(0)->nodeValue;
  $price = $book->getElementsByTagName("price")->item(0)->nodeValue;
  echo "title:".$title."<br>";
  echo "author:".$author."<br>";
  echo "year:".$year."<br>";
  echo "price:".$price ."<br>";
  echo "***********************************<br>";
 }
?>

2、xml_parse_into_struct

创建解析器,将xml数据解析到数组,释放解析器,再有就是从数组中提取想要的值。

<?php
 // 读取xml文件
 $file = "books.xml";
 $data = file_get_contents($file);
 // 创建解析器
 $parser = xml_parser_create();
 // 将 XML 数据解析到数组中
 xml_parse_into_struct($parser, $data, $vals, $index);
 // 释放解析器
 xml_parser_free($parser);
 // 数组处理
 $arr = array();
 $t=0;
 foreach($vals as $value) {
 $type = $value['type'];
 $tag = $value['tag'];
 $level = $value['level'];
 $attributes = isset($value['attributes'])?$value['attributes']:"";
 $val = isset($value['value'])?$value['value']:"";
 switch ($type) {
  case 'open':
  if ($attributes != "" || $val != "") {
   $arr[$t]['tag'] = $tag;
   $arr[$t]['attributes'] = $attributes;
   $arr[$t]['level'] = $level;
   $t++;
  } 
  break;
  case "complete":
  if ($attributes != "" || $val != "") {
   $arr[$t]['tag'] = $tag;
   $arr[$t]['attributes'] = $attributes;
   $arr[$t]['val'] = $val;
   $arr[$t]['level'] = $level;
   $t++;
  } 
  break;
 } 
 } 
 echo "<pre>";
 print_r($arr);
 echo "</pre>";
?>

3、用 SAX 解析器读取 XML-----XML Simple API(SAX)解析器

<?php
 $file="books.xml";
 $xml = simplexml_load_file($file);
 echo "<pre>";
 print_r($xml);
 echo "</pre>";
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php zend解密软件绿色版测试可用
Apr 14 PHP
php将数据库中的电话号码读取出来并生成图片
Aug 31 PHP
使用bcompiler对PHP文件进行加密的代码
Aug 29 PHP
php发送post请求的三种方法
Feb 11 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
Apr 09 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
php两种无限分类方法实例
Apr 21 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
PHP实现限制IP访问及提交次数的方法详解
Jul 17 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 PHP
php实现统计网站在线人数的方法
May 12 #PHP
PHP输出一个等腰三角形的方法
May 12 #PHP
PHP session文件独占锁引起阻塞问题解决方法
May 12 #PHP
PHP获取数组最大值下标的方法
May 12 #PHP
PHP Streams(流)详细介绍及使用
May 12 #PHP
PHP stream_context_create()函数的使用示例
May 12 #PHP
php中使用gd库实现下载网页中所有图片
May 12 #PHP
You might like
php获取301跳转URL简单实例
2013/12/16 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
移动节点的jquery代码
2014/01/13 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
JavaScript中的编码和解码函数
2017/02/15 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
redux.js详解及基本使用
2019/05/24 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
Vue页面手动刷新,实现导航栏激活项还原到初始状态
2020/08/06 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
[00:58]他们到底在电话里听到了什么?
2017/11/21 DOTA
python提取字典key列表的方法
2015/07/11 Python
Python+django实现简单的文件上传
2016/08/17 Python
python 实现得到当前时间偏移day天后的日期方法
2018/12/31 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
电大自我鉴定
2013/10/27 职场文书
咖啡店自主创业商业计划书
2014/01/22 职场文书
《最大的“书”》教学反思
2014/02/14 职场文书
村班子对照检查材料
2014/08/18 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
nginx配置ssl实现https的方法示例
2021/03/31 Servers
python基于turtle绘制几何图形
2021/06/15 Python