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 SQL Injection with MySQL
Feb 27 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
php自定义urlencode,urldecode函数实例
Mar 24 PHP
php结合正则获取字符串中数字
Jun 19 PHP
大家都应该掌握的PHP关联数组使用技巧
Dec 25 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
PHP5.4起内置web服务器使用方法
Aug 09 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
php实现的数组转xml案例分析
Sep 28 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 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远程采集图片详细教程
2014/07/01 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
Javascript与vbscript数据共享
2007/01/09 Javascript
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
javascript中加var和不加var的区别 你真的懂吗
2016/01/06 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
jquery遍历json对象集合详解
2016/05/18 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
Python bisect模块原理及常见实例
2020/06/17 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
详解python对象之间的交互
2020/09/29 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
《春笋》教学反思
2014/04/15 职场文书
二年级小学生评语
2014/04/21 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
2014年公务员个人工作总结
2014/11/22 职场文书