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 相关文章推荐
3
Oct 09 PHP
用php写的serv-u的web申请账号的程序
Oct 09 PHP
PHP define函数的使用说明
Aug 27 PHP
php header示例代码(推荐)
Sep 08 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
PHP静态文件生成类实例
Nov 29 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
php 基础函数
Feb 10 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP一个简单的无需刷新爬虫
Jan 05 PHP
解决php写入数据库乱码的问题
Sep 17 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错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP中使用TCPDF生成PDF文档实例
2014/07/01 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
利用javascript实现一些常用软件的下载导航
2009/08/03 Javascript
jquery tools 系列 scrollable学习
2009/09/06 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
js中有关IE版本检测
2012/01/04 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
使用React实现轮播效果组件示例代码
2016/09/05 Javascript
jQuery插件form-validation-engine正则表达式操作示例
2017/02/09 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
2017/12/09 Javascript
vue iView 上传组件之手动上传功能
2018/03/16 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
2018/08/24 Javascript
微信小程序自定义扫码功能界面的实现代码
2020/07/02 Javascript
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
网站性能延迟加载图像的五种技巧(小结)
2020/08/13 HTML / CSS
戛纳奢侈品商店:Jacques Loup法国
2019/11/04 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
应届毕业生求职信范文
2013/12/18 职场文书
大学生村官承诺书
2014/03/28 职场文书
大学生就业求职信
2014/06/12 职场文书
入党培养人考察意见
2015/06/08 职场文书
社会实践心得体会范文
2016/01/14 职场文书
Python爬虫进阶之Beautiful Soup库详解
2021/04/29 Python
PHP 时间处理类Carbon
2022/05/20 PHP