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数组函数序列之array_unique() - 去除数组中重复的元素值
Oct 29 PHP
PHP以及MYSQL日期比较方法
Nov 29 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
php对数组排序代码分享
Feb 24 PHP
PHP编程基本语法快速入门手册
Jan 07 PHP
46 个非常有用的 PHP 代码片段
Feb 16 PHP
php简单获取复选框值的方法
May 11 PHP
PHP链表操作简单示例
Oct 15 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
PHP+redis实现微博的推模型案例分析
Jul 10 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中动态HTML的输出技术
2006/10/09 PHP
一些php项目中比较通用的php自建函数的详解
2013/06/06 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
dwr spring的集成实现代码
2009/03/22 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
基于Jquery的仿Windows Aero弹出窗(漂亮的关闭按钮)
2010/09/28 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
浅析JavaScript Array和string的转换(推荐)
2016/05/20 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
JS+HTML5实现的前端购物车功能插件实例【附demo源码下载】
2016/10/17 Javascript
angularjs中$http异步上传Excel文件方法
2018/02/23 Javascript
vue webpack开发访问后台接口全局配置的方法
2018/09/18 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
详解vue-template-admin三级路由无法缓存的解决方案
2020/03/10 Javascript
echarts柱状图背景重叠组合而非并列的实现代码
2020/12/10 Javascript
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
Python 函数基础知识汇总
2018/03/09 Python
python查看列的唯一值方法
2018/07/17 Python
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
Python调用scp向服务器上传文件示例
2019/12/22 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
使用Filters滤镜弥补CSS3的跨浏览器问题以及兼容低版本IE
2013/01/23 HTML / CSS
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
英国门把手公司:Door Handle Company
2019/05/12 全球购物
物业招聘计划书
2014/01/10 职场文书
自我检讨报告
2015/01/28 职场文书
党内外群众意见范文
2015/06/02 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
ubuntu如何搭建vsftpd服务器
2022/12/24 Servers