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语法(4)
Oct 09 PHP
php简单封装了一些常用JS操作
Feb 25 PHP
php 数组二分法查找函数代码
Feb 16 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
ThinkPHP3.2.2的插件控制器功能简述
Jul 09 PHP
php实现在线通讯录功能(附源码)
May 13 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
thinkPHP自动验证、自动添加及表单错误问题分析
Oct 17 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 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/09/24 PHP
基于php socket(fsockopen)的应用实例分析
2013/06/02 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
php验证session无效的解决方法
2014/11/04 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
JS删除字符串中重复字符方法
2014/03/09 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
让你彻底掌握es6 Promise的八段代码
2017/07/26 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
谈谈JavaScript令人迷惑的==与+
2020/08/31 Javascript
python3编写C/S网络程序实例教程
2014/08/25 Python
Python魔术方法详解
2015/02/14 Python
Python3里的super()和__class__使用介绍
2015/04/23 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
Python中生成Epoch的方法
2017/04/26 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
Python使用多进程运行含有任意个参数的函数
2020/05/02 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
公司中秋节活动方案
2014/02/12 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
导游词之昭君岛
2020/01/17 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript
sql字段解析器的实现示例
2021/06/23 SQL Server