PHP使用DOM和simplexml读取xml文档的方法示例


Posted in PHP onFebruary 08, 2017

本文实例讲述了PHP使用DOM和simplexml读取xml文档的方法。分享给大家供大家参考,具体如下:

实例  用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <book>
  <title>天龙八部</title>
  <author>金庸</author>
 </book>
 <book>
  <title>陆小凤</title>
  <author>古龙</author>
 </book>
 <book>
  <title>倚天屠龙记</title>
  <author>金庸</author>
 </book>
 <book>
  <title>西游记</title>
  <author>吴承恩</author>
 </book>
 <book>
  <title>神雕侠侣</title>
  <author>金庸</author>
 </book>
 <book>
  <title>射雕英雄传</title>
  <author>金庸</author>
 </book>
</root>

用DOM代码实现:

DOM读取xml文档步骤:1、创建DOM对象——》2、载入DOM文档内容——》3、截取要读取内容所在的标签——》获得要读取的内容。

header('Content-type:text/html;charset=utf-8');
$arr=array();
$dom = new DOMDocument();//创建DOM对象
$dom->load('./books.xml');//载入xml文档
print_r($dom);
echo '<hr>';
$dom = $dom->getElementsByTagName('book');//截取标签
for($i=0;$i<$dom->length;$i++){
 if($dom->item($i)->childNodes->item(1)->childNodes->item(0)->wholeText=='金庸'){
  $arr[] = $dom->item($i)->childNodes->item(0)->childNodes->item(0)->wholeText.'<br />';//获取内容
 }
}
print_r($arr);

使用 getElementsByTagName 和 childNodes 后返回的都是对象,所以它们后面必须使用 item(int),哪怕它们返回的对象里面只包含一个项目,也必须用item(0)来指定,否则就会出错。

用simplexml代码实现:

$simxml = simplexml_load_file('./books.xml');
$t = $simxml->book;
$arr=array();
foreach ($t as $v){
 if($v->author=='金庸'){
  $arr[] = (string)$v->title;
 }
}
print_r($arr);

使用 simplexml_load_file 后返回的是对象,该对象里的项目既有对象又有数组,不管是对象还是数组,要循环里面的内容都可以用 foreach。该实例最后获取的内容 $v->title 其实是个对象,所以要用 string 转化为字符串。

PHP 相关文章推荐
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
遭遇php的in_array低性能问题
Sep 17 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
Jan 14 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
基于PHP实现数据分页显示功能
May 26 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
php 如何设置一个严格控制过期时间的session
May 05 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
Oct 26 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
Nov 25 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 #PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 #PHP
PHP输出XML格式数据的方法总结
Feb 08 #PHP
PHP中大括号'{}'用法实例总结
Feb 08 #PHP
Yii CFileCache 获取不到值的原因分析
Feb 08 #PHP
php实现连接access数据库并转txt写入的方法
Feb 08 #PHP
php unicode编码和字符串互转的方法
Aug 12 #PHP
You might like
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
使用gd库实现php服务端图片裁剪和生成缩略图功能分享
2013/12/25 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
全系IE支持Bootstrap的解决方法
2015/10/19 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
Bootstrap作品展示站点实战项目2
2016/10/14 Javascript
node使用Koa2搭建web项目的方法
2017/10/17 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
2017/11/27 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
2018/03/03 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
Python程序设计入门(4)模块和包
2014/06/16 Python
Python中的yield浅析
2014/06/16 Python
用实例分析Python中method的参数传递过程
2015/04/02 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
TensorFlow模型保存和提取的方法
2018/03/08 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
Django 重写用户模型的实现
2019/07/29 Python
python画图常规设置方式
2020/03/05 Python
用Python进行websocket接口测试
2020/10/16 Python
市级青年文明号申报材料
2014/05/26 职场文书
2015秋季幼儿园开学通知
2015/07/16 职场文书
2019军训心得体会
2019/06/27 职场文书
浅谈sql_@SelectProvider及使用注意说明
2021/08/04 Java/Android
java executor包参数处理功能 
2022/02/15 Java/Android
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers