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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
PHP Memcached应用实现代码
Feb 08 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
Nov 02 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
PHP的关于变量和日期处理的一些面试题目整理
Aug 10 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
Laravel find in set排序实例
Oct 09 PHP
Laravel中Kafka的使用详解
Mar 24 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
yii插入数据库防并发的简单代码
2017/05/27 PHP
jQuery 使用个人心得
2009/02/26 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
js实现滚动条滚动到页面底部继续加载
2015/12/19 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
jQuery图片轮播插件——前端开发必看
2016/05/31 Javascript
javascript 中关于array的常用方法详解
2017/05/05 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
json数据格式常见操作示例
2019/06/13 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
[37:22]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第一局
2016/02/28 DOTA
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
python通过加号运算符操作列表的方法
2015/07/28 Python
Python实现简单http服务器
2018/04/12 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
python 处理telnet返回的More,以及get想要的那个参数方法
2019/02/14 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
英国时尚运动品牌的合集:The Sports Edit
2017/12/20 全球购物
药品质量检测应届生求职信
2013/11/14 职场文书
2014年师德师风学习材料
2014/05/16 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
工会主席事迹材料
2014/06/03 职场文书
蓬莱阁导游词
2015/02/04 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript