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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
使用新浪微博API的OAuth认证发布微博实例
Mar 27 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
PHP 实现链式操作
Mar 09 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 反射机制实现动态代理的代码
2008/10/22 PHP
php 404错误页面实现代码
2009/06/22 PHP
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
laravel创建类似ThinPHP中functions.php的全局函数
2016/11/26 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
jquery实现类似淘宝星星评分功能实例
2014/09/12 Javascript
JS实现不规则TAB选项卡效果代码
2015/09/16 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
教你如何在Node.js中使用jQuery
2016/08/28 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
ES6中Array.includes()函数的用法
2017/09/20 Javascript
js中document.write和document.writeln的区别
2018/03/11 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
2019/06/03 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
sqlalchemy对象转dict的示例
2014/04/22 Python
python for循环输入一个矩阵的实例
2018/11/14 Python
Python之指数与E记法的区别详解
2019/11/21 Python
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
澳大利亚波西米亚风情网上商店:Czarina
2019/03/18 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
物流管理应届生求职信
2013/11/07 职场文书
考试违纪检讨书
2014/02/02 职场文书
学习两会精神心得范文
2014/03/17 职场文书
煤矿安全承诺书
2014/05/22 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
内乡县衙导游词
2015/02/05 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis