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读写文件的方法(生成HTML)
Nov 27 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
PHP 类型转换函数intval
Jun 20 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
PHP 反向排序和随机排序代码
Jun 30 PHP
php去除重复字的实现代码
Sep 16 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PDO::inTransaction讲解
Jan 28 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 17 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 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 操作调试的方法
2012/07/12 PHP
PHP HTML JavaScript MySQL代码如何互相传值的方法分享
2012/09/30 PHP
PHP运行模式的深入理解
2013/06/03 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
Jquery中基本选择器用法实例详解
2015/05/18 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
vue获取dom元素注意事项
2017/12/28 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
python奇偶行分开存储实现代码
2018/03/19 Python
python2.7使用plotly绘制本地散点图和折线图
2019/04/02 Python
python3中使用__slots__限定实例属性操作分析
2020/02/14 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
SpringBoot实现登录注册常见问题解决方案
2020/03/04 Python
Python类super()及私有属性原理解析
2020/06/15 Python
python中如何打包用户自定义模块
2020/09/23 Python
CSS3制作皮卡丘动画壁纸的示例
2020/11/02 HTML / CSS
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
String和StringBuffer的区别
2015/08/13 面试题
校运会广播稿100字
2014/01/27 职场文书
教师求职信范文
2014/05/24 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
小学生读书笔记
2015/07/01 职场文书
导游词之阆中古城
2019/12/23 职场文书