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 相关文章推荐
Access数据库导入Mysql的方法之一
Oct 09 PHP
MySQL中create table语句的基本语法是
Jan 15 PHP
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
php实现递归与无限分类的方法
Feb 16 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
PHP网络操作函数汇总
May 18 PHP
Laravel5权限管理方法详解
Jul 26 PHP
php 生成Tab键或逗号分隔的CSV
Sep 24 PHP
laravel中的一些简单实用功能
Nov 03 PHP
PHP+Apache实现二级域名之间共享cookie的方法
Jul 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
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
JS随即打乱数组实现代码
2012/12/03 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
JS获取地址栏参数的小例子
2013/08/23 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
js自定义回调函数
2015/12/13 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
2016/05/27 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
2016/07/14 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
微信小程序wx.request拦截器使用详解
2019/07/09 Javascript
修改layui的后台模板的左侧导航栏可以伸缩的方法
2019/09/10 Javascript
python 字符串格式化代码
2013/03/17 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
python中JWT用户认证的实现
2020/05/18 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
两种CSS3伪类选择器详细介绍
2013/12/24 HTML / CSS
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
新奥尔良珠宝:Mignon Faget
2020/11/23 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
关于递归的一道.NET面试题
2013/05/12 面试题
美术专业学生个人自我评价
2013/09/19 职场文书
财务管理专业推荐信
2013/11/19 职场文书
离婚协议书怎么写
2014/09/12 职场文书
房屋所有权证明
2014/10/20 职场文书
nginx实现发布静态资源的方法
2021/03/31 Servers