php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)


Posted in PHP onDecember 19, 2010

共分四个文件,分别是创建、增加、删除、修改四个功能,变量都是写死的,改一改用$_POST方式接收就可以用了
//index.php 创建功能

<?php 
$xmlpatch = 'index.xml'; 
$_id = '1'; 
$_title = 'title1'; 
$_content = 'content1'; 
$_author = 'author1'; 
$_sendtime = 'time1'; 
$_htmlpatch = '1.html'; 
3water.com$doc = new DOMDocument('1.0', 'utf-8'); 
$doc -> formatOutput = true; 
3water.com$root = $doc -> createElement('root');//新建节点 
3water.com$index = $doc -> createElement('index');//新建节点 
3water.com$url = $doc -> createAttribute('url');//新建属性 
$patch = $doc -> createTextNode($_htmlpatch);//新建TEXT值 
$url -> appendChild($patch);//将$patch文本设为$url属性的值 
3water.com$id = $doc -> createAttribute('id'); 
$newsid = $doc -> createTextNode($_id); 
$id -> appendChild($newsid); 
3water.com$title = $doc -> createAttribute('title'); 
$newstitle = $doc -> createTextNode($_title); 
$title -> appendChild($newstitle); 
3water.com$content = $doc -> createTextNode($_content);//节点值 
3water.com$author = $doc -> createAttribute('author'); 
$newsauthor = $doc -> createTextNode($_author); 
$author -> appendChild($newsauthor); 
3water.com$sendtime = $doc -> createAttribute('time'); 
$newssendtime = $doc -> createTextNode($_sendtime); 
$sendtime -> appendChild($newssendtime); 
3water.com$index -> appendChild($id);//将$id设为index节点的属性,以下类同 
$index -> appendChild($title); 
$index -> appendChild($content); 
$index -> appendChild($url); 
$index -> appendChild($author); 
$index -> appendChild($sendtime); 
3water.com$root -> appendChild($index);//设置index为root字节点 
3water.com$doc -> appendChild($root);//设置root为跟节点 
3water.com$doc -> save($xmlpatch);//保存文件 
3water.comecho $xmlpatch . ' has create success'; 
3water.com?> 
3water.com<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>XML操作</title> 
</head> 
3water.com<body> 
</body> 
</html>

//add.php 增加功能(跟index.php文件差不多,主要就是加个load载入跟 $root = $doc -> documentElement获得跟节点
<?php 
$xmlpatch = 'index.xml'; 
$_id = '2'; 
$_title = 'title2'; 
$_content = 'content2'; 
$_author = 'author2'; 
$_sendtime = 'time2'; 
$_htmlpatch = '2.html'; 
3water.com$doc = new DOMDocument(); 
$doc -> formatOutput = true; 
if($doc -> load($xmlpatch)) { 
$root = $doc -> documentElement;//获得根节点(root) 
$index = $doc -> createElement('index'); 
3water.com$url = $doc -> createAttribute('url'); 
$patch = $doc -> createTextNode($_htmlpatch); 
$url -> appendChild($patch); 
3water.com$id = $doc -> createAttribute('id'); 
$newsid = $doc -> createTextNode($_id); 
$id -> appendChild($newsid); 
3water.com$title = $doc -> createAttribute('title'); 
$newstitle = $doc -> createTextNode($_title); 
$title -> appendChild($newstitle); 
3water.com$content = $doc -> createTextNode($_content); 
3water.com$author = $doc -> createAttribute('author'); 
$newsauthor = $doc -> createTextNode($_author); 
$author -> appendChild($newsauthor); 
3water.com$sendtime = $doc -> createAttribute('time'); 
$newssendtime = $doc -> createTextNode($_sendtime); 
$sendtime -> appendChild($newssendtime); 
3water.com$index -> appendChild($id); 
$index -> appendChild($title); 
$index -> appendChild($content); 
$index -> appendChild($url); 
$index -> appendChild($author); 
$index -> appendChild($sendtime); 
3water.com$root -> appendChild($index); 
3water.com$doc -> save($xmlpatch); 
3water.comecho $_id . ' has been added in ' . $xmlpatch; 
3water.com} else { 
echo 'xml file loaded error!'; 
} 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>XML操作-添加</title> 
</head> 
3water.com<body> 
</body> 
</html>

//edit.php 修改功能(这里只修改title属性值 跟节点值)
<?php 
$xmlpatch = 'index.xml'; 
$_id = '2'; 
$_title = 'has been changed'; 
$_content = 'has been changed'; 
3water.com$doc = new DOMDocument(); 
$doc -> formatOutput = true; 
3water.comif($doc -> load($xmlpatch)) { 
$root = $doc -> documentElement; 
$elm = $root -> getElementsByTagName('index'); 
$checkexist = 0; 
foreach ($elm as $new) { 
if($new -> getAttribute('id') == $_id) { 
$new -> setAttribute('title', $_title); 
$new -> nodeValue = $_content;//修改节点值,真是太意外了,没想到跟JS一样直接能赋值... 
//$new -> removeChild($new -> nodevalue); 
$checkexist = 1; 
} 
} 
if($checkexist == 0) { 
echo $_id . ' is not found in ' . $xmlpatch; 
} else { 
$doc -> save($xmlpatch); 
echo $_id . ' has been changed'; 
} 
} else { 
echo 'xml file loaded error!'; 
} 
3water.com?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>XML操作-修改</title> 
</head> 
3water.com<body> 
</body> 
</html>

//del.php 删除功能
<?php 
$xmlpatch = 'index.xml'; 
$_id = '2'; 
3water.com$doc = new DOMDocument(); 
$doc -> formatOutput = true; 
if($doc -> load($xmlpatch)) { 
$root = $doc -> documentElement; 
$elm = $root -> getElementsByTagName('index'); 
foreach ($elm as $new) { 
if($new -> getAttribute('id') == $_id) { 
if($root -> removeChild($new)) { 
echo $_id . ' has been deleted'; 
} else { 
echo $_id . ' delete failed'; 
} 
} 
} 
$doc -> save($xmlpatch); 
} else { 
echo 'xml file loaded error!'; 
} 
3water.com?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>XML操作-删除</title> 
</head> 
3water.com<body> 
</body> 
</html>

3water.com
总结一下,创建跟添加主要用的就是create跟appendChild,create后边跟Element就是创建节点,跟Attribute就是创建属性,TextNode就是创建值,然后appendChild就是设置从属关系,这么一看非常简单。删除与修改都是用先获得节点列表getElementsByTagName然后foreach遍历想要修改的节点.
PHP 相关文章推荐
建立文件交换功能的脚本(三)
Oct 09 PHP
php win下Socket方式发邮件类
Aug 21 PHP
php 常用类汇总 推荐收藏
May 13 PHP
在VS2008中编译MYSQL5.1.48的方法
Jul 03 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
PHP基础知识介绍
Sep 17 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
PHP生成plist数据的方法
Jun 16 PHP
PHP排序算法类实例
Jun 17 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
Apr 10 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
关于laravel 子查询 &amp; join的使用
Oct 16 PHP
PHP与MySQL开发的8个技巧小结
Dec 17 #PHP
hessian 在PHP中的使用介绍
Dec 13 #PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
Dec 12 #PHP
php 高性能书写
Dec 11 #PHP
php foreach 参数强制类型转换的问题
Dec 10 #PHP
snoopy 强大的PHP采集类使用实例代码
Dec 09 #PHP
PHPwind整合最土系统用户同步登录实现方法
Dec 08 #PHP
You might like
基于mysql的论坛(4)
2006/10/09 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
PHP中使用memcache存储session的三种配置方法
2014/04/05 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
PHP如何通过date() 函数格式化显示时间
2020/11/13 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
学习面向对象之面向对象的基本概念:对象和其他基本要素
2010/11/30 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
基于jquery实现一个滚动的分步注册向导-附源码
2015/08/26 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
学习Node.js模块机制
2016/10/17 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
js分页之前端代码实现和请求处理
2017/08/04 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
浅谈Webpack 是如何加载模块的
2018/05/24 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
python+mysql实现简单的web程序
2014/09/11 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
pyqt5中动画的使用详解
2020/04/01 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
Jmeter调用Python脚本实现参数互相传递的实现
2021/01/22 Python
纯CSS3实现的阴影效果
2014/12/24 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
给水工程专业毕业生自荐信
2014/01/28 职场文书
入党自我评价范文
2014/02/02 职场文书
房产委托公证书样本
2014/04/04 职场文书
公司请假条范文
2014/04/11 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
植树节口号
2014/06/21 职场文书
创建文明城市倡议书
2015/04/28 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
导游词之海南天涯海角
2019/12/05 职场文书