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的FTP学习(二)
Oct 09 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
php中substr()函数参数说明及用法实例
Nov 15 PHP
php数组键值用法实例分析
Feb 27 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 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
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
PHP实现图片压缩的两则实例
2014/07/19 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
再谈JavaScript线程
2015/07/10 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
jQuery动画效果实现图片无缝连续滚动
2016/01/12 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
Angular JS 生成动态二维码的方法
2017/02/23 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
单利模式及python实现方式详解
2018/03/20 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
在mac下查找python包存放路径site-packages的实现方法
2018/11/06 Python
Python中遍历列表的方法总结
2019/06/27 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
Footshop乌克兰:运动鞋的最大选择
2019/12/01 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
医院后勤自我鉴定
2013/10/13 职场文书
物业管理毕业生个人的求职信
2013/11/30 职场文书
理财投资建议书
2014/03/12 职场文书
六一节目主持词
2014/04/01 职场文书
教师产假请假条范文
2014/04/10 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
预备党员自我评价范文
2015/03/04 职场文书
Python获取字典中某个key的value
2022/04/13 Python