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调用三种数据库的方法(1)
Oct 09 PHP
php对gzip文件或者字符串解压实例参考
Jul 25 PHP
PHP 编写的 25个游戏脚本
May 11 PHP
mysql下创建字段并设置主键的php代码
May 16 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
php中autoload的用法总结
Nov 08 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
php生成带logo二维码方法小结
Apr 08 PHP
php验证身份证号码正确性的函数
Jul 20 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
Dec 05 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 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 和 MySQL 基础教程(二)
2006/10/09 PHP
PHP学习 运算符与运算符优先级
2008/06/15 PHP
php 文件上传类代码
2011/08/06 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
2013/09/25 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
JavaScript实现的简单烟花特效代码
2015/10/20 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
Bootstrap轮播图学习使用
2017/02/10 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
react-router JS 控制路由跳转实例
2017/06/15 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
python flask 如何修改默认端口号的方法步骤
2019/07/12 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
Python学习笔记之装饰器
2020/08/06 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
职工运动会邀请函
2014/02/02 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
社团活动总结格式
2014/08/29 职场文书
应聘教师求职信范文
2015/03/20 职场文书
黑白记忆观后感
2015/06/18 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python