自定义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 相关文章推荐
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
PHP n个不重复的随机数生成代码
Jun 23 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
php数组合并的二种方法
Mar 21 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
PHP实现Google plus的好友拖拽分组效果
Oct 21 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
Oct 25 PHP
php常用字符串String函数实例总结【转换,替换,计算,截取,加密】
Dec 07 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
vmware linux系统安装最新的php7图解
Apr 14 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
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
js中的cookie的读写操作示例详解
2014/04/17 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
分享Bootstrap简单表格、表单、登录页面
2017/08/04 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
python打开文件并获取文件相关属性的方法
2015/04/23 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
python写程序统计词频的方法
2019/07/29 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
基于python操作ES实例详解
2019/11/16 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
Belvilla法国:休闲度假房屋出租
2020/10/03 全球购物
学生会主席事迹材料
2014/01/28 职场文书
淘宝好评语大全
2014/05/05 职场文书
离婚财产处理协议书
2014/09/30 职场文书
《玩出了名堂》教学反思
2016/02/17 职场文书
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle