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中获取远程客户端的真实ip地址的方法
Aug 03 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
分享下PHP register_globals 值为on与off的理解
Sep 26 PHP
php中OR与|| AND与&amp;&amp;的区别总结
Oct 26 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
PHP临时文件的安全性分析
Jul 04 PHP
Symfony核心类概述
Mar 17 PHP
php+js实现百度地图多点标注的方法
Nov 30 PHP
Yii框架实现多数据库配置和操作的方法
May 25 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
PHP vsprintf()函数格式化字符串操作原理解析
Jul 14 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
详解:――如何将图片储存在数据库里
2006/12/05 PHP
?生?D片??C字串
2006/12/06 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
2012/06/28 PHP
php简单的留言板与回复功能具体实现
2014/02/19 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
laravel5.6实现数值转换
2019/10/23 PHP
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
javascript实现状态栏中文字动态显示的方法
2015/10/20 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
详解Node项目部署到云服务器上
2017/07/12 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
AngularJS日期格式化常见操作实例分析
2018/05/17 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
基于python select.select模块通信的实例讲解
2017/09/21 Python
Python中int()函数的用法浅析
2017/10/17 Python
Python 修改列表中的元素方法
2018/06/26 Python
Python 查看list中是否含有某元素的方法
2018/06/27 Python
Python中的Django基本命令实例详解
2018/07/15 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
Python如何操作docker redis过程解析
2020/08/10 Python
Python运算符+与+=的方法实例
2021/02/18 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
顶撞领导检讨书
2014/01/29 职场文书
百日安全活动总结
2014/05/04 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
大学生预备党员自我评价
2015/03/04 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书