我生成的xml是这样的
<?xml version="1.0"?>
<message>
  <title>dd</title>
  <content>ee</content>
</message>
写了这样的一个函数xml('33','j33');
xml('dd','ee');
function xml($m_title,$m_content){$doc = new DOMDocument('1.0');
$doc->loadXML('x.xml');
$doc->formatOutput = true;
$root = $doc->createElement('message');
$root = $doc->appendChild($root);$title = $doc->createElement('title');
$title = $root->appendChild($title);$title_text = $doc->createTextNode($m_title);
$title_text = $title->appendChild($title_text);$content=$doc->createElement('content');
$content=$root->appendChild($content);$text = $doc->createTextNode($m_content);
$text = $content->appendChild($text);echo $doc->saveXML();
echo $doc->save('x.xml');}
?>
可是我想每次调用它的时候,数据可以一直往里面追加,而现在确实新数据替换了原来的

解决方案 »

  1.   

    呵呵~~~思路有问题。根据你的function每次会重新生成MESSAGE,并且覆盖原来的数据。如果想实现追加数据并且不覆盖原来标签内容,主标签写在function外。不明白地方再跟贴说明。
      

  2.   

    1、读取XML文件用 $doc->load('x.xml') 而不是 $doc->loadXML。$doc->loadXML 是从串中读取2、在你的代码中缺少了根节点
    设初始的xml文档为
    <?xml version="1.0"?>
    <root>
    </root>

    xml('33','j33'); 
    xml('dd','ee'); 
    function xml($m_title,$m_content){ $doc = new DOMDocument('1.0'); 
    $doc->load('x.xml'); 
    $doc->formatOutput = true; 
    $root = $doc->getElementsByTagName('root')->item(0);$dom = $doc->createElement('message'); 
    $dom = $root->appendChild($dom); $title = $doc->createElement('title'); 
    $title = $dom->appendChild($title); $title_text = $doc->createTextNode($m_title); 
    $title_text = $title->appendChild($title_text); $content=$doc->createElement('content'); 
    $content=$dom->appendChild($content); $text = $doc->createTextNode($m_content); 
    $text = $content->appendChild($text); echo $doc->saveXML(); 
    echo $doc->save('x.xml'); } 
    得到的xml文档为
    <?xml version="1.0" ?> 
    <root>
     <message>
      <title>33</title> 
      <content>j33</content> 
     </message>
     <message>
      <title>dd</title> 
      <content>ee</content> 
     </message>
    </root>
      

  3.   

    在php里把xml写成字符串, 输出时生成xml文件, 不是很好, 何必用对象