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中GET变量的使用
Oct 09 PHP
PHP中for循环语句的几种变型
Nov 26 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
php array_map()数组函数使用说明
Jul 12 PHP
无JS,完全php面向过程数据分页实现代码
Aug 27 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
php插件Xajax使用方法详解
Aug 31 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 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
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
第一节--面向对象编程
2006/11/16 PHP
PHP的变量总结 新手推荐
2011/04/18 PHP
php入门学习知识点三 PHP上传
2011/07/14 PHP
CodeIgniter视图使用注意事项
2016/01/20 PHP
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
JavaScript中创建对象的模式汇总
2016/04/19 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
深入理解JavaScript中Ajax
2016/08/02 Javascript
JS实现的相册图片左右滚动完整实例
2016/11/23 Javascript
javascript设计模式之模块模式学习笔记
2017/02/15 Javascript
微信小程序通过保存图片分享到朋友圈功能
2018/05/24 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
Angular Material Icon使用详解
2018/11/07 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
浅谈JS和jQuery的区别
2019/03/27 jQuery
jquery.pager.js实现分页效果
2019/07/29 jQuery
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
Python正则表达式使用范例分享
2016/12/04 Python
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
pygame实现简易飞机大战
2018/09/11 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
python实现QQ批量登录功能
2019/06/19 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
html5利用canvas实现颜色容差抠图功能
2019/12/23 HTML / CSS
加拿大廉价机票预订网站:CheapOair.ca
2018/03/04 全球购物
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
计算机实训心得体会
2016/01/14 职场文书
JavaScript圣杯布局与双飞翼布局实现案例详解
2022/08/05 Javascript