自定义php类(查找/修改)xml文档


Posted in PHP onMarch 26, 2013

近期在看PHP的教学视频,其中讲到了 PHP 操作 xml 文档,学了点儿 DOMDocument 类。自己查手册又全英文,看不大懂。但还是自己写了个类,实现了查找 xml 节点,并修改节点值。背景解说完毕,且看代码如下:

/* 
<?xml version="1.0" encoding="UTF-8"?> 
<班级> 
<学生 number="101"> 
<名字>孙悟空</名字> 
<名字>孙行者</名字> 
<年龄>猴精猴精</年龄> 
<介绍></介绍> 
</学生> 
<学生 number="102"> 
<名字>白骨精</名字> 
<年龄>140</年龄> 
<介绍>幻化万千</介绍> 
</学生> 
<学生 number="103"> 
<名字>猪八戒</名字> 
<名字>猪无能</名字> 
<年龄>200</年龄> 
<介绍>能吃会睡</介绍> 
</学生> 
</班级> 
*/ 
class xmlDom{ 
public $version; 
public $encoding; 
private $xml; 
private $items; 
private $seachNode = ''; 
private $seachItem = ''; 
private $seachValue = ''; 
public $writeBytes = 0; 
function __construct($xmlFile ='', $version ='1.0', $encoding = 'UTF-8'){ 
$this->version = $version; 
$this->encoding = $encoding; 
$this->xml = new DOMDocument($version, $encoding); 
if($xmlFile)$this->xml->load($xmlFile); 
} 
function getRootEle($rootTag){ 
$this->xmlRoot = $this->xml->getElementsByTagName($rootTag)->item(0); 
} 
function getSeachItem($itemsTag, $seachNode, $seachValue){ 
$this->items = $this->xml->getElementsByTagName($itemsTag); 
$this->items->length; 
for($i=0; $i<$this->items->length; $i++){ 
$item = $this->items->item($i);//元素 
$node = $item->getElementsByTagName($seachNode);//节点 
for($j = 0; $j< $node->length; $j++){ 
$subNode = $node->item($j); 
if($seachValue == $subNode->nodeValue){ 
$this->seachNode = $subNode; 
$this->seachItem = $item; 
$this->seachValue = $subNode->nodeValue; 
break(2); 
} 
} 
} 
return ($this->seachNode) ? true : false; 
} 
function update($nodeValue, $nodeTag = '',$append = false, $index = 0){ 
if($append){ 
if($nodeTag) 
$this->seachItem->getElementsByTagName($nodeTag)->item($index)->nodeValue += $nodeValue; 
else 
$this->seachNode->nodeValue += $nodeValue; 
}else{ 
if($nodeTag) 
$this->seachItem->getElementsByTagName($nodeTag)->item($index)->nodeValue = $nodeValue; 
else 
$this->seachNode->nodeValue = $nodeValue; 
} 
} 
function save($filename){ 
$this->writeBytes = $this->xml->save($filename); 
return ($this->writeBytes) ? true : false; 
} 
} 
$test = new xmlDom('student.xml'); 
$test->getSeachItem('学生','年龄','103');//找到 年龄=103 的猪八戒 
$test->update('小猪猪', '名字', false, 1); //把猪八戒的第二个名字改成:小猪猪 
$test->save('new.xml'); //保存成新文件
PHP 相关文章推荐
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
PHP生成唯一订单号
Jul 05 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
Apr 04 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
详解Yii实现分页的两种方法
Jan 14 PHP
PHP基于SMTP协议实现邮件发送实例代码
Apr 27 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
PHP-X系列教程之内置函数的使用示例
Oct 16 PHP
php实现算术验证码功能
Dec 05 PHP
php实现网页上一页下一页翻页过程详解
Jun 28 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 PHP
php中DOMElement操作xml文档实例演示
Mar 26 #PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 #PHP
PHP中图片等比缩放的实例
Mar 24 #PHP
比较简单的百度网盘文件直链PHP代码
Mar 24 #PHP
php实现单链表的实例代码
Mar 22 #PHP
php 判断数组是几维数组
Mar 20 #PHP
php页面消耗内存过大的处理办法
Mar 18 #PHP
You might like
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
php解析xml方法实例详解
2015/05/12 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
2017/04/04 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
javascript 一些用法小结
2009/09/11 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
JavaScript调用客户端Java程序的方法
2015/07/27 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
分享两款带遮罩的jQuery弹出框
2015/12/30 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
laravel实现中文和英语互相切换的例子
2019/09/30 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
vue 实现click同时传入事件对象和自定义参数
2021/01/29 Vue.js
python使用SMTP发送qq或sina邮件
2017/10/21 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
python 多线程串行和并行的实例
2019/02/22 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
博士研究生自我鉴定范文
2013/12/04 职场文书
2014年幼儿园教研工作总结
2014/12/04 职场文书
2016年父亲节寄语
2015/12/04 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang
Sql Server之数据类型详解
2022/02/28 SQL Server
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL