自定义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 相关文章推荐
PHPShop存在多个安全漏洞
Oct 09 PHP
PHP 输出缓存详解
Jun 20 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
php中关于普通表单多文件上传的处理方法
Mar 25 PHP
注册页面之前先验证用户名是否存在的php代码
Jul 14 PHP
ThinkPHP实现动态包含文件的方法
Nov 29 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
总结对比php中的多种序列化
Aug 28 PHP
php接口技术实例详解
Dec 07 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 PHP
PHP实现爬虫爬取图片代码实例
Mar 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
示例详解Laravel的注册重构
2016/08/14 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
jquery中this的使用说明
2010/09/06 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
jQuery实现随意改变div任意属性的名称和值(部分原生js实现)
2013/05/28 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
浅谈jquery中使用canvas的问题
2016/10/10 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
2018/08/28 jQuery
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
js实现查询商品案例
2020/07/22 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
PyCharm最新激活码(2020/10/27全网最新)
2020/10/27 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
网络编程中设计并发服务器,使用多进程与多线程,请问有什么区别?
2016/03/27 面试题
大学生的网络创业计划书
2013/12/26 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
社区党支部承诺书
2015/04/29 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js
HTML中实现音乐或视频自动播放案例详解
2022/05/30 HTML / CSS