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 session 检测和注销
Mar 16 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
php使用curl存储cookie的示例
Mar 31 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
php实现的IMEI限制的短信验证码发送类
May 05 PHP
php图片上传类 附调用方法
May 15 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
php生成word并下载代码实例
Mar 15 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 16 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 PHP
PHP页面静态化――纯静态与伪静态用法详解
Jun 05 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中如何调用webservice的实例参考
2013/04/25 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
2016/10/31 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
JavaScript对象原型链原理详解
2020/02/05 Javascript
js实现小星星游戏
2020/03/23 Javascript
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
Python常见文件操作的函数示例代码
2011/11/15 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
Python绘制正余弦函数图像的方法
2018/08/28 Python
解决Python plt.savefig 保存图片时一片空白的问题
2019/01/10 Python
Python for循环与getitem的关系详解
2020/01/02 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
HTML5 新事件 小结
2009/07/16 HTML / CSS
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
学校校庆演讲稿
2014/05/22 职场文书
聘用意向书
2014/07/29 职场文书
党校毕业心得体会
2014/09/13 职场文书
2015年大学生工作总结
2015/04/21 职场文书
学习心得体会
2019/06/20 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
解决flex布局中子项目尺寸不受flex-shrink限制
2022/05/11 HTML / CSS