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 相关文章推荐
模仿OSO的论坛(三)
Oct 09 PHP
PHP 用数组降低程序的时间复杂度
Dec 04 PHP
php数组函数序列之sort() 对数组的元素值进行升序排序
Nov 02 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
php实现递归与无限分类的方法
Feb 16 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
Ajax提交表单时验证码自动验证 php后端验证码检测
Jul 20 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
YII框架常用技巧总结
Apr 27 PHP
php 实现银联商务H5支付的示例代码
Oct 12 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
php程序之die调试法 快速解决错误
2009/09/17 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
python文本数据相似度的度量
2018/03/12 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
基于python进行桶排序与基数排序的总结
2018/05/29 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
Python实现SMTP邮件发送
2020/06/16 Python
python Scrapy爬虫框架的使用
2021/01/21 Python
详解使用canvas保存网页为pdf文件支持跨域
2018/11/23 HTML / CSS
生日宴会主持词
2014/03/20 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
python游戏开发之pygame实现接球小游戏
2022/04/22 Python