自定义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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
php采集时被封ip的解决方法
Aug 29 PHP
PHP中CURL方法curl_setopt()函数的参数分享
Jan 19 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 PHP
php生成HTML文件的类方法
Oct 11 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
2016/09/11 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
JQuery中$之选择器用法介绍
2011/04/05 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
微信小程序 基础知识css样式media标签
2017/02/15 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
微信小程序自定义tabBar在uni-app的适配详解
2019/09/30 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
vue实现div可拖动位置也可改变盒子大小的原理
2020/09/16 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python 中 Meta Classes详解
2016/02/13 Python
python中string模块各属性以及函数的用法介绍
2016/05/30 Python
python 连接sqlite及简单操作
2017/06/30 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
解决Django生产环境无法加载静态文件问题的解决
2019/04/23 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
香港艺人陈冠希创办的潮流品牌:JUICESTORE
2021/03/04 全球购物
法人授权委托书格式
2014/04/08 职场文书
公休请假条
2014/04/11 职场文书
2014年人事部工作总结
2014/12/03 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
人力资源部岗位职责
2015/02/11 职场文书
外出考察学习心得体会
2016/01/18 职场文书