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和ACCESS写聊天室(十)
Oct 09 PHP
php公用函数列表[正则]
Feb 22 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
一道关于php变量引用的面试题
Aug 08 PHP
深入PHP变量存储的详解
Jun 13 PHP
使用PHP静态变量当缓存的方法
Nov 13 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
Smarty3配置及入门语法
Feb 22 PHP
详解thinkphp中的volist标签
Jan 15 PHP
PHP微信H5支付开发实例
Jul 25 PHP
Git命令之分支详解
Mar 02 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中文字母数字验证码实现代码
2008/04/25 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
PHP sdk实现在线打包代码示例
2020/12/09 PHP
javascript 客户端验证上传图片的大小(兼容IE和火狐)
2009/08/15 Javascript
jQuery 使用手册(三)
2009/09/23 Javascript
ajax java 实现自动完成功能
2012/12/19 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
ES6 Array常用扩展的应用实例分析
2019/06/26 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
[12:29]《一刀刀一天》之DOTA全时刻19:蝙蝠骑士田伯光再度不举
2014/06/10 DOTA
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python操作列表之List.insert()方法的使用
2015/05/20 Python
简介Django框架中可使用的各类缓存
2015/07/23 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
python实现AES加密解密
2019/03/28 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python opencv鼠标事件实现画框圈定目标获取坐标信息
2020/04/18 Python
python 回溯法模板详解
2020/02/26 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
房地产员工找工作的自我评价
2013/11/15 职场文书
前厅部经理岗位职责范文
2014/02/04 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
Python经常使用的一些内置函数
2022/04/11 Python
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers