自定义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如何透过ODBC来存取数据库
Oct 09 PHP
基于文本的访客签到簿
Oct 09 PHP
PHP 判断变量类型实现代码
Oct 23 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 PHP
php获取通过http协议post提交过来xml数据及解析xml
Dec 16 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
使用正则去除php代码中的注释方法
Nov 03 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
PHP 出现 http500 错误的解决方法
Mar 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
PHP explode()函数用法讲解
2019/02/15 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
js冒泡法和数组转换成字符串示例代码
2013/08/14 Javascript
javascript面向对象特性代码实例
2014/06/12 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
解析js如何获取css样式
2016/12/11 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
Vue键盘事件用法总结
2017/04/18 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
深入探究AngularJs之$scope对象(作用域)
2017/07/20 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
JS沙箱模式实例分析
2017/09/04 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
node.js实现微信开发之获取用户授权
2019/03/18 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
Python字典的核心底层原理讲解
2019/01/24 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
python开头的coding设置方法
2019/08/08 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
PyTorch安装与基本使用详解
2020/08/31 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
六一文艺汇演主持词
2015/06/30 职场文书
2016公司年会主持词
2015/07/01 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
MySQL 时间类型的选择
2021/06/05 MySQL
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js