自定义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调用数据库的存贮过程
Oct 09 PHP
PHP学习之PHP表达式
Oct 09 PHP
模仿OSO的论坛(二)
Oct 09 PHP
PHP 魔术函数使用说明
May 14 PHP
几个有用的php字符串过滤,转换函数代码
May 01 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
Oct 05 PHP
浅析PHP递归函数返回值使用方法
Feb 18 PHP
PHP检测字符串是否为UTF8编码的常用方法
Nov 21 PHP
php中mysql操作buffer用法详解
Mar 19 PHP
PHP怎样用正则抓取页面中的网址
Aug 09 PHP
ThinkPHP中图片按比例切割的代码实例
Mar 08 PHP
Laravel相关的一些故障解决
Aug 19 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性能的21种方法介绍
2013/06/25 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP SESSION的增加、删除、修改、查看操作
2015/03/20 PHP
PHP图像处理类库MagickWand用法实例分析
2015/05/21 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
JSON 学习之完全手册 图文
2007/05/29 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
记录一篇关于redux-saga的基本使用过程
2018/08/18 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
Python MySQLdb Linux下安装笔记
2015/05/09 Python
pandas的qcut()方法详解
2019/07/06 Python
详解如何用TensorFlow训练和识别/分类自定义图片
2019/08/05 Python
python如何将多个PDF进行合并
2019/08/13 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
英文简历中的自我评价
2013/10/06 职场文书
2014年自我评价
2014/01/04 职场文书
学校万圣节活动方案
2014/02/13 职场文书
刚毕业大学生自荐信范文
2014/02/20 职场文书
绿色环保演讲稿
2014/05/10 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
南湾猴岛导游词
2015/02/09 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS