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版(1)
Oct 09 PHP
PHP的分页功能
Mar 21 PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
php获取远程文件内容的函数
Nov 02 PHP
解析WordPress中函数钩子hook的作用及基本用法
Dec 22 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
cakephp常见知识点汇总
Feb 24 PHP
实例讲解PHP页面静态化
Feb 05 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
Memcached常用命令以及使用说明详解
2013/06/27 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
javascript中万恶的function实例分析
2011/05/25 Javascript
javascript+xml实现简单图片轮换(只支持IE)
2012/12/23 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
javascript确认框的三种使用方法
2013/12/17 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
命令行批量截图Node脚本示例代码
2019/01/25 Javascript
使用webpack将ES6转化ES5的实现方法
2019/10/13 Javascript
javascript设计模式 ? 外观模式原理与用法实例分析
2020/04/15 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
python命令行参数sys.argv使用示例
2014/01/28 Python
Python装饰器使用示例及实际应用例子
2015/03/06 Python
Python的多态性实例分析
2015/07/07 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
使用Python的networkx绘制精美网络图教程
2019/11/21 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
日语专业个人的求职信
2013/12/03 职场文书
人事部主管岗位职责
2013/12/26 职场文书
英语自我评价范文
2014/01/24 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
党员个人剖析材料
2014/09/30 职场文书
财产分割协议书范本
2014/11/03 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
python使用openpyxl库读写Excel表格的方法(增删改查操作)
2021/05/02 Python