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 相关文章推荐
人大复印资料处理程序_输入篇
Oct 09 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
浅析php数据类型转换
Jan 09 PHP
2个Codeigniter文件批量上传控制器写法例子
Jul 25 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
PHP完全二叉树定义与实现方法示例
Oct 09 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
Oct 23 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
ThinkPHP采用模块和操作分析
2011/04/18 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
2019/03/21 PHP
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
javascript 函数使用说明
2010/04/07 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
解决同一页面中两个iframe互相调用jquery,js函数的方法
2016/12/12 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
配置node服务器并且链接微信公众号接口配置步骤详解
2019/06/21 Javascript
[50:27]Secret vs VG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python实现自动更换ip的方法
2015/05/05 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
关于python的bottle框架跨域请求报错问题的处理方法
2017/03/19 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
高效使用Python字典的清单
2018/04/04 Python
python3+opencv3识别图片中的物体并截取的方法
2018/12/05 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
通过python检测字符串的字母
2020/02/18 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
pycharm2020.1.2永久破解激活教程,实测有效
2020/10/29 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
技术经理的自我评价范文
2013/12/03 职场文书
项目合作协议书
2014/04/16 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
销售人才自我评价范文
2014/09/27 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
2014年党总支工作总结
2014/12/18 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
检察院起诉书
2015/05/20 职场文书
常住证明范本
2015/06/23 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL