自定义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 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
简单的php文件上传(实例)
Oct 27 PHP
php中的路径问题与set_include_path使用介绍
Feb 11 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
PHP微信开发之有道翻译
Jun 23 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
通过修改Laravel Auth使用salt和password进行认证用户详解
Aug 17 PHP
PHP利用百度ai实现文本和图片审核
May 08 PHP
phpstorm激活码2020附使用详细教程
Sep 25 PHP
PHP isset empty函数相关面试题及解析
Dec 11 PHP
PHP新手指南
Apr 01 PHP
如何理解PHP核心特性命名空间
May 28 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
程序员编程十条戒律
2009/07/09 PHP
PHP/ThinkPHP实现批量打包下载文件的方法示例
2017/07/31 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
JavaScript中实现块作用域的方法
2010/04/01 Javascript
jQuery总体架构的理解分析
2011/03/07 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
jquery拖动插件(jquery.drag)使用介绍
2013/06/18 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
JS实现控制文本框的内容
2016/07/10 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
vue-cli3配置与跨域处理方法
2019/08/17 Javascript
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
Python自定义简单图轴简单实例
2018/01/08 Python
使用python编写监听端
2018/04/12 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
Python基本语法之运算符功能与用法详解
2019/10/22 Python
python list数据等间隔抽取并新建list存储的例子
2019/11/27 Python
python实现图像全景拼接
2020/03/27 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
HTML5 层的叠加的实现
2020/07/07 HTML / CSS
南非最受欢迎的时尚品牌:MRP
2016/09/18 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
Kingsoft金山公司C/C++笔试题
2016/05/10 面试题
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
证券区域经理岗位职责
2015/04/10 职场文书
夏洛特的网观后感
2015/06/15 职场文书
大学生各类奖学金申请书
2019/06/24 职场文书
pandas中DataFrame检测重复值的实现
2021/05/26 Python