自定义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 相关文章推荐
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 PHP
一个用php实现的获取URL信息的类
Jan 02 PHP
php 设计模式之 单例模式
Dec 19 PHP
PHP5 面向对象(学习记录)
Dec 02 PHP
Cakephp 执行主要流程
Mar 24 PHP
PHP中其实也可以用方法链
Nov 10 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
PHP中调用SVN命令更新网站方法
Jan 07 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
PHP绕过open_basedir限制操作文件的方法
Jun 10 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 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
php获取汉字拼音首字母的方法
2015/10/21 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
23个Javascript弹出窗口特效整理
2011/02/25 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
Angularjs全局变量被作用域监听的正确姿势
2016/02/06 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
详解 vue.js用法和特性
2017/10/15 Javascript
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
2018/03/15 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
小程序中使用css var变量(使js可以动态设置css样式属性)
2020/03/31 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python进阶教程之动态类型详解
2014/08/30 Python
pyqt5自定义信号实例解析
2018/01/31 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
pytorch查看模型weight与grad方式
2020/06/24 Python
python3中编码获取网页的实例方法
2020/11/16 Python
python3列表删除大量重复元素remove()方法的问题详解
2021/01/04 Python
html5的canvas元素使用方法介绍(画矩形、画折线、圆形)
2014/04/14 HTML / CSS
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
经典c++面试题二
2015/08/14 面试题
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
高校毕业生自我鉴定
2013/10/27 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
考研英语复习计划
2015/01/19 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL