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 相关文章推荐
经典的PHPer为什么被认为是草根?
Apr 02 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
php实现使用正则将文本中的网址转换成链接标签
Dec 03 PHP
phplot生成图片类用法详解
Jan 06 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
php函数重载的替代方法--伪重载详解
May 08 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
php常用图片处理类
Mar 16 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
Laravel中的Blade模板引擎示例详解
Oct 10 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 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之第十天
2006/10/09 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
php通过array_push()函数添加多个变量到数组末尾的方法
2015/03/18 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
JS实现浏览器菜单命令
2006/09/05 Javascript
关于this和self的使用说明
2010/08/01 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
Python导入txt数据到mysql的方法
2015/04/08 Python
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
Django中的Model操作表的实现
2018/07/24 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python编程快速上手——强口令检测算法案例分析
2020/02/29 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
电气专业推荐信范文
2013/11/18 职场文书
积极贯彻学习两会精神总结
2014/03/17 职场文书
禁毒宣传活动总结
2014/08/26 职场文书
2014最新实习证明模板
2014/10/02 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
红色影片观后感
2015/06/18 职场文书
血轮眼轮回眼特效 html+css
2021/03/31 HTML / CSS
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL