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 EOT定界符的使用详解
Sep 30 PHP
php配合jquery实现增删操作具体实例
Dec 12 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
PHP四种基本排序算法示例
Apr 09 PHP
PHP 微信支付类 demo
Nov 30 PHP
php添加数据到xml文件的简单例子
Sep 08 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
Sep 23 PHP
PHP PDOStatement::setFetchMode讲解
Feb 03 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
Apr 09 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 PHP
PHP date_default_timezone_set()设置时区操作实例分析
May 16 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
我的论坛源代码(十)
2006/10/09 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
jquery 表格分页等操作实现代码(pagedown,pageup)
2010/04/11 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
2010/05/06 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
2016/06/22 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
vue-cli实现多页面多路由的示例代码
2018/01/30 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
python中List的sort方法指南
2014/09/01 Python
python装饰器decorator介绍
2014/11/21 Python
python监控文件或目录变化
2016/06/07 Python
python django使用haystack:全文检索的框架(实例讲解)
2017/09/27 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
企业法人授权委托书
2014/04/03 职场文书
供应链金融服务方案
2014/05/25 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
违反工作规定检讨书范文
2014/12/14 职场文书
圆明园观后感
2015/06/03 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书