自定义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动态生成VRML网页
Oct 09 PHP
在任意字符集下正常显示网页的方法二(续)
Apr 01 PHP
PHP多进程编程实例
Oct 15 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
用php代码限制国内IP访问我们网站
Sep 26 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
php简单实现多语言切换的方法
May 09 PHP
如何使用PHP给图片加水印
Oct 12 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
Yii2 queue的队列使用详解
Jul 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
深入密码加salt原理的分析
2013/06/06 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
jQuery实现文本框邮箱输入自动补全效果
2015/11/17 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
jQuery实现的表格展开伸缩效果实例
2016/09/07 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
Python二维码生成识别实例详解
2019/07/16 Python
Ubuntu+python将nii图像保存成png格式
2019/07/18 Python
Python3的unicode编码转换成中文的问题及解决方案
2019/12/10 Python
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
个人课题方案
2014/05/08 职场文书
水电站项目建议书
2014/05/12 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
2014年居委会工作总结
2014/12/09 职场文书
党员个人承诺书
2015/04/27 职场文书
退税申请报告怎么写
2015/05/18 职场文书
初中班主任心得体会
2016/01/07 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
2019年干货:自我鉴定
2019/03/25 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python