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 缓冲的免费实现方法
Oct 09 PHP
php采集速度探究总结(原创)
Apr 18 PHP
PHP 引用文件技巧
Mar 02 PHP
php 常用类汇总 推荐收藏
May 13 PHP
手把手教你打印出PDF(关于fpdf的简单应用)
Jun 25 PHP
php获取汉字首字母的函数
Nov 07 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 PHP
PHP加密技术的简单实现
Sep 04 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
laravel框架如何设置公共头和公共尾
Oct 22 PHP
PHP策略模式写法
Apr 01 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的分页功能
2007/03/21 PHP
学习discuz php 引入文件的方法DISCUZ_ROOT
2009/06/21 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
PHP实现模仿socket请求返回页面的方法
2014/11/04 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
2016/07/06 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
9个JavaScript评级/投票插件
2010/01/18 Javascript
javascript中使用new与不使用实例化对象的区别
2015/06/22 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
vue项目中使用tinymce编辑器的步骤详解
2018/09/11 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
python使用多线程编写tcp客户端程序
2019/09/02 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
Python jieba库分词模式实例用法
2021/01/13 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
爱尔兰灯和灯具网上商店:Lights.ie
2018/03/26 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
房地产销售大学生自我评价分享
2013/11/11 职场文书
求职信格式范本
2013/11/15 职场文书
药品促销活动方案
2014/02/14 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
2014年租房协议书范本
2014/10/30 职场文书
2014年营业员工作总结
2014/11/18 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers