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 相关文章推荐
TMDPHP 模板引擎使用教程
Mar 13 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
PHP解析目录路径的3个函数总结
Nov 18 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
PHP编写RESTful接口
Feb 23 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
Linux系统中为php添加pcntl扩展
Aug 28 PHP
php封装的验证码类分享
Feb 26 PHP
PHP asXML()函数讲解
Feb 03 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 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
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
CodeIgniter控制器之业务逻辑实例分析
2016/01/20 PHP
php 的反射详解及示例代码
2016/08/25 PHP
浅谈PHP封装CURL
2019/03/06 PHP
基于Laravel-admin 后台的自定义页面用法详解
2019/09/30 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
JScript 脚本实现文件下载 一般用于下载木马
2009/10/29 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
JavaScript观察者模式(经典)
2015/12/09 Javascript
javascript每日必学之封装
2016/02/23 Javascript
JavaScript File分段上传
2016/03/10 Javascript
Bootstrap前端开发案例二
2016/06/17 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python中functools模块函数解析
2017/03/12 Python
python实现超简单的视频对象提取功能
2018/06/04 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
浅析python 字典嵌套
2020/09/29 Python
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
获奖的大学生创业计划书
2014/01/05 职场文书
中国梦的演讲稿
2014/01/08 职场文书
电工技术比武方案
2014/05/11 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
2015年暑期社会实践活动总结
2015/03/27 职场文书
大学生就业意向书
2015/05/11 职场文书
红白喜事主持词
2015/07/06 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers