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 discuz 主题表和回帖表的设计
Mar 13 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
Aug 24 PHP
PHP的一个基础知识 表单提交
Jul 04 PHP
php实现利用phpexcel导出数据
Aug 24 PHP
PHP $_FILES中error返回值详解
Jan 30 PHP
php中3种方法删除字符串中间的空格
Mar 10 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
Oct 16 PHP
PHP实现的一致性哈希算法完整实例
Nov 14 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
使用JavaScript创建新样式表和新样式规则
Jun 14 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
Oct 23 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 随机生成10位字符代码
2009/03/26 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
php语法检查的方法总结
2019/01/21 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
激活 ActiveX 控件
2006/10/09 Javascript
JavaScript中的作用域链和闭包
2012/06/30 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
浅谈Node异步编程的机制
2017/10/18 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
详解React中setState回调函数
2018/06/14 Javascript
全面理解Python中self的用法
2016/06/04 Python
Python中将字典转换为列表的方法
2016/09/21 Python
详解Python之unittest单元测试代码
2018/01/24 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Python中整数的缓存机制讲解
2019/02/16 Python
Python中的random.uniform()函数教程与实例解析
2019/03/02 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
python 通过 pybind11 使用Eigen加速代码的步骤
2020/12/07 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
JD Sports马来西亚:英国领先的运动鞋和运动服饰零售商
2018/03/13 全球购物
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
演讲比赛策划方案
2014/06/11 职场文书
土建施工员岗位职责
2014/07/16 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
语文教师个人工作总结
2015/02/06 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书