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概述.
Oct 09 PHP
两个强悍的php 图像处理类1
Jun 15 PHP
mysql,mysqli,PDO的各自不同介绍
Sep 19 PHP
PHP可变函数的使用详解
Jun 14 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
ThinkPHP上使用多说评论插件的方法
Oct 31 PHP
php使用curl通过代理获取数据的实现方法
May 16 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
Apr 27 PHP
php实现表单提交上传文件功能
May 28 PHP
浅谈laravel aliases别名的原理
Oct 24 PHP
通过实例解析PHP数据类型转换方法
Jul 11 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
查找iframe里元素的方法可传参
2013/09/11 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
Javascript WebSocket使用实例介绍(简明入门教程)
2014/04/16 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
2015/06/23 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
2016/02/03 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
python自动安装pip
2014/04/24 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python 实现子类获取父类的类成员方法
2019/01/11 Python
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
售后主管岗位职责
2013/12/08 职场文书
2014年教师培训的自我评价
2014/01/03 职场文书
个人对照检查材料
2014/02/12 职场文书
意向书范本
2014/07/29 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
Go 自定义package包设置与导入操作
2021/05/06 Golang
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis
实战Python爬虫爬取酷我音乐
2022/04/11 Python