自定义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 5.0对象模型深度探索之绑定
Sep 05 PHP
一个简单的PHP入门源程序
Oct 09 PHP
PHP图片上传类带图片显示
Nov 25 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
C#静态方法与非静态方法实例分析
Sep 22 PHP
php中的动态调用实例分析
Jan 07 PHP
浅谈本地WAMP环境的搭建
May 13 PHP
php中 ob_start等函数截取标准输出的方法
Jun 22 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
Laravel配置全局公共函数的方法步骤
May 09 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
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
php编程每天必学之表单验证
2016/03/01 PHP
laravel 字段格式化 modle 字段类型转换方法
2019/09/30 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
由JavaScript中call()方法引发的对面向对象继承机制call的思考
2011/09/12 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
javascript如何写热点图
2015/12/08 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
JavaScript判断浏览器及其版本信息
2017/01/20 Javascript
基于JavaScript实现复选框的全选和取消全选
2017/02/09 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
Python编程入门的一些基本知识
2015/05/13 Python
一篇文章入门Python生态系统(Python新手入门指导)
2015/12/11 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
美国汽车零部件和配件网站:CarParts
2019/03/13 全球购物
大学生蛋糕店创业计划书
2014/01/13 职场文书
《愚公移山》教学反思
2014/02/20 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
公司收款委托书范本
2014/09/20 职场文书
个人自我剖析材料
2014/09/30 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
单位综合评价意见
2015/06/05 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang