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 目录与文件处理-郑阿奇(续)
Jul 04 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
php在linux下检测mysql同步状态的方法
Jan 15 PHP
PHP环境搭建的详细步骤
Jun 30 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
PHP5.6读写excel表格文件操作示例
Feb 26 PHP
PHP递归的三种常用方式
Feb 28 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
php 策略模式原理与应用深入理解
Sep 25 PHP
Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()
Oct 23 PHP
基于PHP实现用户在线状态检测
Nov 10 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
FleaPHP的安全设置方法
2008/09/15 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
2016/03/01 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
javascript内存管理详细解析
2013/11/11 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
vue form check 表单验证的实现代码
2018/12/09 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
JS字符串补全方法padStart()和padEnd()
2020/05/27 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[03:40]DOTA2抗疫特别篇《英雄年代》
2020/02/28 DOTA
用实例说明python的*args和**kwargs用法
2013/11/01 Python
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
从零学Python之hello world
2014/05/21 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
2015/05/05 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
详解Python验证码识别
2016/01/25 Python
python使用pil库实现图片合成实例代码
2018/01/20 Python
Python实现简单http服务器
2018/04/12 Python
python使用KNN算法识别手写数字
2019/04/25 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
使用CSS3实现一个3D相册效果实例
2016/12/03 HTML / CSS
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
巴西女装购物网站:Eclectic
2018/04/24 全球购物
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
单位刻章介绍信范文
2014/01/11 职场文书
大专毕业自我鉴定
2014/02/04 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
教代会开幕词
2015/01/28 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
关于MySQL中explain工具的使用
2023/05/08 MySQL