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 相关文章推荐
别人整理的服务器变量:$_SERVER
Oct 20 PHP
PHP编程中八种常见的文件操作方式
Nov 19 PHP
一个PHP日历程序
Dec 06 PHP
深入HTTP响应状态码速查表的详解
Jun 07 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
php中的ini配置原理详解
Oct 14 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
php递归创建目录的方法
Feb 02 PHP
PHP常用的排序和查找算法
Aug 06 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 PHP
php微信公众号开发之现金红包
Apr 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
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
基于php使用memcache存储session的详解
2013/06/25 PHP
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
使用jquery为table动态添加行的实现代码
2011/03/30 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
JS控制TreeView的结点选择
2016/11/11 Javascript
js实现前端分页页码管理
2017/01/06 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
在Python中使用正则表达式的方法
2015/08/13 Python
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
Python 监测文件是否更新的方法
2019/06/10 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
python生成任意频率正弦波方式
2020/02/25 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
介绍一下linux的文件系统
2012/03/20 面试题
Python面试题:Python里面如何生成随机数
2015/03/12 面试题
电子商务专业个人的自我评价
2013/12/19 职场文书
部队领导证婚词
2014/01/12 职场文书
初一体育教学反思
2014/01/29 职场文书
家庭贫困证明
2014/09/23 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
世界遗产的导游词
2015/02/13 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书