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脚本数据库功能详解(中)
Oct 09 PHP
收藏的一个php小偷的核心程序
Apr 09 PHP
mysql limit查询优化分析
Nov 12 PHP
php include和require的区别深入解析
Jun 17 PHP
PHP父类调用子类方法的代码例子
Apr 09 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
php银联网页支付实现方法
Mar 04 PHP
Laravel中注册Facades的步骤详解
Mar 16 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
Apr 15 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
Aug 14 PHP
php使用event扩展的io复用测试的示例
Oct 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 session常见问题集锦及解决办法总结
2007/03/18 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
PHP自定义函数实现assign()数组分配到模板及extract()变量分配到模板功能示例
2018/05/23 PHP
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
webpack4.x打包过程详解
2018/07/18 Javascript
微信小程序项目实践之验证码倒计时功能
2018/07/18 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
小程序如何定位所在城市及发起周边搜索
2020/02/11 Javascript
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
Linux CentOS7下安装python3 的方法
2018/01/21 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python如何制作英文字典
2019/06/25 Python
python3使用腾讯企业邮箱发送邮件的实例
2019/06/28 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
python如何判断IP地址合法性
2020/04/05 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
员工薪酬福利制度
2014/01/17 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
七一晚会主持词
2015/06/29 职场文书
呐喊读书笔记
2015/06/30 职场文书
学会感恩主题班会
2015/08/12 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
请假条应该怎么写?
2019/06/24 职场文书
暑假开始了,你的暑假学习计划写好了吗?
2019/07/04 职场文书