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面向对象编程快速入门
Dec 14 PHP
收集的DedeCMS一些使用经验
Mar 17 PHP
php 动态添加记录
Mar 10 PHP
php Static关键字实用方法
Jun 04 PHP
基于php在各种web服务器的运行模式详解
Jun 03 PHP
php根据年月获取季度的方法
Mar 31 PHP
php身份证号码检查类实例
Jun 18 PHP
PHP实现多文件上传的方法
Jul 08 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
phpcmsv9.0任意文件上传漏洞解析
Oct 20 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之第三天
2006/10/09 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
WordPress中给媒体文件添加分类和标签的PHP功能实现
2015/12/31 PHP
phalcon框架使用指南
2016/02/23 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
2016/05/28 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
Vue之Watcher源码解析(2)
2017/07/19 Javascript
细说Vue组件的服务器端渲染的过程
2019/05/30 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
微信小程序点击item使之滚动到屏幕中间位置
2020/03/25 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
Vue使用CDN引用项目组件,减少项目体积的步骤
2020/10/30 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
[00:56]跨越时空加入战场 全新祈求者身心“失落奇艺侍祭”展示
2019/07/20 DOTA
python实现批量修改图片格式和尺寸
2018/06/07 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
python字典的常用方法总结
2019/07/31 Python
PyQt+socket实现远程操作服务器的方法示例
2019/08/22 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
用Python进行websocket接口测试
2020/10/16 Python
Python与C/C++的相互调用案例
2021/03/04 Python
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
结婚喜宴家长答谢词
2014/01/15 职场文书
领导班子三严三实对照检查材料
2014/09/25 职场文书
2014年学生会工作总结
2014/11/07 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书