原文链接:http://my.oschina.net/zhangb081511/blog/160113
PHP写XML方法很多,这里主要介绍一下DOMDocument的用法,跟 JS大体上相同,其实非常简单。[PHP XML DOM链接]
共分四个文件,分别是创建、增加、删除、修改四个功能,变量都是写死的,改一改用$_POST方式接收就可以用了
TEST_PAGE
<?
php
$xmlpatch = 'index.xml'
;
$_id = '1'
;
$_title = 'title1'
;
$_content = 'content1'
;
$_author = 'author1'
;
$_sendtime = 'time1'
;
$_htmlpatch = '1.html'
;
$doc =
new DOMDocument('1.0', 'utf-8'
);
$doc -> formatOutput =
true;
$root =
$doc -> createElement('root');
//新建节点
$index =
$doc -> createElement('index');
//新建节点
$url =
$doc -> createAttribute('url');
//新建属性
$patch =
$doc -> createTextNode(
$_htmlpatch);
//新建TEXT值
$url -> appendChild(
$patch);
//将$patch文本设为$url属性的值
$id =
$doc -> createAttribute('id'
);
$newsid =
$doc -> createTextNode(
$_id);
$id -> appendChild(
$newsid);
$title =
$doc -> createAttribute('title'
);
$newstitle =
$doc -> createTextNode(
$_title);
$title -> appendChild(
$newstitle);
$content =
$doc -> createTextNode(
$_content);
//节点值
$author =
$doc -> createAttribute('author'
);
$newsauthor =
$doc -> createTextNode(
$_author);
$author -> appendChild(
$newsauthor);
$sendtime =
$doc -> createAttribute('time'
);
$newssendtime =
$doc -> createTextNode(
$_sendtime);
$sendtime -> appendChild(
$newssendtime);
$index -> appendChild(
$id);
//将$id设为index节点的属性,以下类同
$index -> appendChild(
$title);
$index -> appendChild(
$content);
$index -> appendChild(
$url);
$index -> appendChild(
$author);
$index -> appendChild(
$sendtime);
$root -> appendChild(
$index);
//设置index为root字节点
$doc -> appendChild(
$root);
//设置root为跟节点
$doc -> save(
$xmlpatch);
//保存文件
echo $xmlpatch . ' has create success'
;
?>
ADD
<p>
//add.php 增加功能(跟index.php文件差不多,主要就是加个load载入跟 $root = $doc -> do//cumentElement获得跟节点
</p>
<p>
$xmlpatch = 'index.xml'
;
$_id = '2'
;
$_title = 'title2'
;
$_content = 'content2'
;
$_author = 'author2'
;
$_sendtime = 'time2'
;
$_htmlpatch = '2.html'
;
</p>
<p>
$doc =
new DOMDocument();
$doc -> formatOutput =
true;
if(
$doc -> load(
$xmlpatch)) {
$root =
$doc -> documentElement;
//获得根节点(root)
$index =
$doc -> createElement('index'
);
</p>
<p>
$url =
$doc -> createAttribute('url'
);
$patch =
$doc -> createTextNode(
$_htmlpatch);
$url -> appendChild(
$patch);
</p>
<p>
$id =
$doc -> createAttribute('id'
);
$newsid =
$doc -> createTextNode(
$_id);
$id -> appendChild(
$newsid);
</p>
<p>
$title =
$doc -> createAttribute('title'
);
$newstitle =
$doc -> createTextNode(
$_title);
$title -> appendChild(
$newstitle);
</p>
<p>
$content =
$doc -> createTextNode(
$_content);
</p>
<p>
$author =
$doc -> createAttribute('author'
);
$newsauthor =
$doc -> createTextNode(
$_author);
$author -> appendChild(
$newsauthor);
</p>
<p>
$sendtime =
$doc -> createAttribute('time'
);
$newssendtime =
$doc -> createTextNode(
$_sendtime);
$sendtime -> appendChild(
$newssendtime);
</p>
<p>
$index -> appendChild(
$id);
$index -> appendChild(
$title);
$index -> appendChild(
$content);
$index -> appendChild(
$url);
$index -> appendChild(
$author);
$index -> appendChild(
$sendtime);
</p>
<p>
$root -> appendChild(
$index);
</p>
<p>
$doc -> save(
$xmlpatch);
</p>
<p>
echo $_id . ' has been added in ' .
$xmlpatch;
</p>
<p>
} else {
echo 'xml file loaded error!'
;
}
</p>
<p>
}
</p>
UPDATE
//edit.php 修改功能(这里只修改title属性值 跟节点值)
<?
php
$xmlpatch = 'index.xml'
;
$_id = '2'
;
$_title = 'has been changed'
;
$_content = 'has been changed'
;
$doc =
new DOMDocument();
$doc -> formatOutput =
true;
if(
$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!'
;
}
?>
DELETE
//del.php 删除功能
<?
php
$xmlpatch = 'index.xml'
;
$_id = '2'
;
$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!'
;
}
?>
转载于:https://www.cnblogs.com/CheeseZH/p/4858299.html
相关资源:数据结构—成绩单生成器