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 相关文章推荐
PHP4实际应用经验篇(1)
Oct 09 PHP
PHP新手上路(五)
Oct 09 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
测试您的 PHP 水平的题目
May 30 PHP
Windows 下的 PHP-PEAR 安装方法
Nov 20 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
Sep 23 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
Dec 14 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
SAE实时日志接口SDK用法示例
Oct 09 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
php 解析非标准json、非规范json
Apr 01 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 安全过滤函数代码
2011/05/07 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
jquery预加载图片的方法
2015/05/27 Javascript
BootStrap中的table实现数据填充与分页应用小结
2016/05/26 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
[01:14:05]《加油DOTA》第四期
2014/08/25 DOTA
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
python实现Floyd算法
2018/01/03 Python
pandas.DataFrame删除/选取含有特定数值的行或列实例
2018/11/07 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
Python logging设置和logger解析
2019/08/28 Python
python操作yaml说明
2020/04/08 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python如何调用java类
2020/07/05 Python
PurCotton全棉时代官网:100%天然棉花生产的生活护理用品
2016/11/18 全球购物
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
英国工具中心:UK Tool Centre
2017/07/10 全球购物
幼儿园小班家长寄语
2014/04/02 职场文书
志愿者活动总结报告
2014/06/27 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
员工加薪申请报告
2015/05/15 职场文书
2015领导干部廉洁自律工作总结
2015/07/23 职场文书
Pytorch中使用ImageFolder读取数据集时忽略特定文件
2022/03/23 Python