DOM基础及php读取xml内容操作的方法


Posted in PHP onJanuary 23, 2015

本文实例讲述了DOM基础及php读取xml内容操作的方法。分享给大家供大家参考。具体分析如下:

DOM(Document Object Model):文档对象模型。核心思想是:把 xml文件看作是一个对象模型,然后通过对象的方式来操作 xml 文件。

php对xml文档进行增删改查(curd)操作,具体分析如下:

xml文档:class.xml

<?xml version="1.0" encoding="utf-8"?>

<class>

 <student info="美女">

  <name>小乔</name>

  <sex>女</sex>

  <age>20</age>

 </student>

 <student>

  <name>周瑜</name>

  <sex>男</sex>

  <age>25</age>

 </student>

</class>

class.xml 对应的 DOM 树结构图

DOM基础及php读取xml内容操作的方法

php文件(对xml文档操作)

查询操作案例:

<?php

//1、创建一个DOMDocument对象。该对象就表示 xml文件

$xmldoc = new DOMDocument();

//2、加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中)

$xmldoc->load("class.xml");

//3、目标:获取第一个学生的名字

//3.1 第一步,读取所有的学生

$students = $xmldoc->getElementsByTagName("student");//方法getElementsByTagName:根据所给的节点名字(这里是student)查找 相应的节点,返回 DOMNodeList类型的对象,相当于取出了所有的学生。可以用var_dump($students)查看,并根据返回值查找手册,看其下面的属性与方法。

echo "共有 ".$students->length."个学生<br />";
//3.2 读取第一个学生

$stu1 = $students->item(0);//读取到第一个学生。返回值为DOMElement对象。直接 echo $stu1->nodeValue;则把name,sex,age都输出。

//3.3 取出第一个学生的名字

$stu1_name = $stu1->getElementsByTagName("name");

//3.4 读取到名字

echo $stu1_name->item(0)->nodeValue;

?>

注意点:

(1)编码问题;
(2)这里只是基础演示,比较麻烦,后面用到循环和函数来操作;
(3)用var_dump(),查看变量的返回值是什么,再根据返回值到手册中查找该返回值下的属性与方法。
(4)整个顺序下来,getElementByTagName()并不需要一层一层的读,事实上可以直接读取到节点name的,而不需要先读取student(当然,如果同一个student下,有多个name,就会出问题了,这里就需要学习新的知识点xpath)。

所以上面这代码可以简单改为:

<?php

//1、创建一个DOMDocument对象。该对象就表示 xml文件

$xmldoc = new DOMDocument();

//2、加载xml文件(指定要解析哪个xml文件,此时dom树节点就会加载到内存中)

$xmldoc->load("class.xml");

//3、目标:获取第一个学生的名字

$stu = $xmldoc->getElementsByTagName("name");//直接找到节点name

$stu1 = $stu->item(0);// item(1)时,可以取到周瑜

echo $stu1->nodeValue;

?>

希望本文所述对大家的php操作XML程序设计有所帮助。

PHP 相关文章推荐
PHP.MVC的模板标签系统(三)
Sep 05 PHP
php中对xml读取的相关函数的介绍一
Jun 05 PHP
两个开源的Php输出Excel文件类
Feb 08 PHP
一个基于PDO的数据库操作类(新) 一个PDO事务实例
Jul 03 PHP
解析PHP SPL标准库的用法(遍历目录,查找固定条件的文件)
Jun 18 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
PHP Yaf框架的简单安装使用教程(推荐)
Jun 08 PHP
Thinkphp框架开发移动端接口(1)
Aug 18 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
docker-compose部署php项目实例详解
Jul 30 PHP
PHP开发api接口安全验证操作实例详解
Mar 26 PHP
php操作xml入门之cdata区段
Jan 23 #PHP
php操作xml入门之xml标签的属性分析
Jan 23 #PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 #PHP
PHP对文件进行加锁、解锁实例
Jan 23 #PHP
PHP callback函数使用方法和注意事项
Jan 23 #PHP
PHPExcel内存泄漏问题解决方法
Jan 23 #PHP
使用PHP生成PDF方法详解
Jan 23 #PHP
You might like
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
PHP实现的策略模式示例
2019/03/20 PHP
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
tensorflow 中对数组元素的操作方法
2018/07/27 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
python取余运算符知识点详解
2019/06/27 Python
Python集合操作方法详解
2020/02/09 Python
python自动下载图片的方法示例
2020/03/25 Python
Python 里最强的地图绘制神器
2021/03/01 Python
Solaris操作系统的线程机制
2012/12/23 面试题
《夜晚的实验》教学反思
2014/02/19 职场文书
文员岗位职责范本
2014/03/08 职场文书
项目投资意向书
2014/04/01 职场文书
父母对孩子的寄语
2014/04/09 职场文书
群众路线问题查摆对照检查材料
2014/10/04 职场文书
商业用房租赁协议书
2014/10/13 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
保护校园环境倡议书
2015/04/28 职场文书
开学第一周总结
2015/07/16 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书