问题:
最近研究了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
?>