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中显示格式化的用户输入
Oct 09 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
php 无限级 SelectTree 类
May 19 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
Jun 28 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
Dec 25 PHP
php基于curl扩展制作跨平台的restfule 接口
May 11 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 PHP
php 一维数组的循环遍历实现代码
Apr 10 PHP
phpMyAdmin无法登陆的解决方法
Apr 27 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
Apr 08 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
php旋转图片90度的方法
2013/11/07 PHP
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
前端开发之CSS原理详解
2017/03/11 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
详解Angular 4.x 动态创建组件
2017/04/25 Javascript
vue使用Google地图的实现示例代码
2018/12/19 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Python中的Classes和Metaclasses详解
2015/04/02 Python
Python易忽视知识点小结
2015/05/25 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
python之yield和Generator深入解析
2019/09/18 Python
Django配置文件代码说明
2019/12/04 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
单位单身证明范本
2014/01/11 职场文书
小学语文教学反思
2014/02/10 职场文书
超市中秋节活动方案
2014/02/12 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
社区娱乐活动方案
2014/08/21 职场文书
大学生毕业个人总结
2015/02/15 职场文书
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python
python 进阶学习之python装饰器小结
2021/09/04 Python
frg-100简单操作(设置)说明
2022/04/05 无线电
DE1107机评
2022/04/05 无线电