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 相关文章推荐
简单的过滤字符串中的HTML标记
Dec 25 PHP
php继承的一个应用
Sep 06 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php读取der格式证书乱码解决方法
Jun 22 PHP
ThinkPHP中数据操作案例分析
Sep 27 PHP
php断点续传之文件分割合并详解
Dec 13 PHP
php生成二维码图片方法汇总
Dec 17 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
Jun 12 PHP
thinkPHP5分页功能实现方法分析
Oct 25 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
PHP实现微信退款的方法示例
Mar 26 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
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
JS组件Bootstrap实现图片轮播效果
2016/05/16 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
基于Three.js插件制作360度全景图
2016/11/29 Javascript
bootstrap导航栏、下拉菜单、表单的简单应用实例解析
2017/01/06 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
js类的继承定义与用法分析
2019/06/21 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
js实现数字跳动到指定数字
2020/08/25 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Python实现时钟显示效果思路详解
2018/04/11 Python
Python格式化日期时间操作示例
2018/06/28 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
wxPython实现整点报时
2019/11/18 Python
五种Python转义表示法
2020/11/27 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
英语商务邀请函范文
2014/01/16 职场文书
医学专业职业生涯规划范文
2014/02/05 职场文书
人事专员工作职责
2014/02/22 职场文书
房地产财务部员工岗位职责
2014/03/12 职场文书
班长竞选演讲稿
2014/04/24 职场文书
幼儿发展评估方案
2014/06/11 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书