PHP之XML节点追加操作讲解
问题:最近研究了xml,我想知道,如何用php向已有的xml文档中添加新的节点,比如,xml文档内容如下,并保存为information.xml:
<?xml version="1.0" encoding="utf-8"?>
<information>
<set label='0' value='0' />
<set label='3' value='270' />
</information>
我如果想用php的dom方法再在根节点下添加个新的<set label='' value='' />,我该怎么写啊,求助!
php要实现的效果:
<?xml version="1.0" encoding="utf-8"?>
<information>
<set label='0' value='0' />
<set label='3' value='270' />
<set label='9' value='50' />
<set label='12' value='680' />
<set label='15' value='560' />
<set label='18' value='48' />
<set label='21' value='714' />
<set label='31' value='28' />
</information>
解答:
例子解答:
<?php
header('Content-type: application/xml');
$data_array = array(
array(
'title' => 'title1',
'content' => 'content1',
'pubdate' => '2009-10-11',
),
array(
'title' => 'title2',
'content' => 'content2',
'pubdate' => '2009-11-11',
)
);
//属性数组
$attribute_array = array(
'title' => array(
'size' => 1
)
);
//创建一个XML文档并设置XML版本和编码。。
$dom=new DomDocument('1.0', 'utf-8');
//创建根节点
$article = $dom->createElement('article');
$dom->appendchild($article);
foreach ($data_array as $data) {
$item = $dom->createElement('item');
$article->appendchild($item);
create_item($dom, $item, $data, $attribute_array);
}
echo $dom->saveXML();
function create_item($dom, $item, $data, $attribute) {
if (is_array($data)) {
foreach ($data as $key => $val) {
//创建元素
$$key = $dom->createElement($key);
$item->appendchild($$key);
//创建元素值
$text = $dom->createTextNode($val);
$$key->appendchild($text);
if (isset($attribute[$key])) {
//如果此字段存在相关属性需要设置
foreach ($attribute[$key] as $akey => $row) {
//创建属性节点
$$akey = $dom->createAttribute($akey);
$$key->appendchild($$akey);
// 创建属性值节点
$aval = $dom->createTextNode($row);
$$akey->appendChild($aval);
}
} //end if
}
} //end if
} //end function
?>
页:
[1]