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 循环列出目录内容的函数代码
May 26 PHP
基于empty函数的输出详解
Jun 17 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
理解php依赖注入和控制反转
May 11 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
PHPExcel 修改已存在Excel的方法
May 03 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
php实现的数组转xml案例分析
Sep 28 PHP
laravel实现上传图片的两种方式小结
Oct 12 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
php strcmp使用说明
2010/04/22 PHP
php批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
2019/10/08 PHP
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
asp.net+jquery.form实现图片异步上传的方法(附jquery.form.js下载)
2016/05/05 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
NW.js 简介与使用方法
2018/02/01 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
简单了解Ajax表单序列化的实现方法
2019/06/14 Javascript
微信小程序简单的canvas裁剪图片功能详解
2019/07/12 Javascript
JavaScript原型式继承实现方法
2019/11/06 Javascript
Python的gevent框架的入门教程
2015/04/29 Python
Python下载网络小说实例代码
2018/02/03 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
深入了解Python在HDA中的应用
2019/09/05 Python
python matplotlib绘制三维图的示例
2020/09/24 Python
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
八项规定整改措施
2014/02/12 职场文书
机修工工作职责
2014/02/21 职场文书
《满井游记》教学反思
2014/02/26 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
不错的求职信范文
2014/07/20 职场文书
2014年加油站工作总结
2014/12/04 职场文书
技术负责人岗位职责
2015/02/10 职场文书