php写xml文件老是出错,一时找不到原因, 请求大伙帮助!
以下是我的程序代码:
<?php>
$txtmail = $_POST["txtemail"];
$txtname = $_POST["txtname"];
$txtmsg = $_POST["txtmessage"];$doc = newDOMDocument("1.0");
$doc->load("xmlorders.xml");
$root=$doc->getElementsByTagName("orders")->item(0);
$order = $doc->createElement("order");
$name = $doc->createElement("name");
$email = $doc->createElement("email");
$message = $doc->createElement("message");
$date = $doc->createElement("createdate");$name->appendChild($doc->createTextNode($txtname));
$email->appendChild($doc->createTextNode($txtmail));
$message->appendChild($doc->createTextNode($txtmsg));
$date->appendChild($doc->createTextNode(date("Y-m-j")+" "+date("G:i:s")));$order->appendChild($name);
$order->appendChild($email);
$order->appendChild($message);
$order->appendChild($date);
$root->appendChild($order);
//echo$doc->saveXML();
$doc->save("xmlorders.xml");
?>是不是xml文件必须得到物理路径?
谢谢! 

解决方案 »

  1.   


    function addOrder($doc, $value)
    {
        $item = $doc->createElement('order');
        $cdata = $doc->createCDATASection($value);
        $item->appendChild($cdata);
        $doc->documentElement->appendChild($item);
    }
    $txtmail = $_POST["txtemail"];
    $txtname = $_POST["txtname"];
    $txtmsg = $_POST["txtmessage"];
    $doc = new DOMDocument();
    $doc->loadXML('<orders></orders>');addOrder($doc, $txtmail);
    addOrder($doc, $txtname);
    addOrder($doc, $txtmsg);$doc->save('D:/test.xml');
      

  2.   

    不行的, 我的代码是要加载已经在的xml文件, 然后再新增节点xml与php文件放在同一个目录下,能访问到吗?
      

  3.   

    可以的另外楼主的代码有错 多了个> 还有new那里没有空格 测试通过 
    <?php
    $txtmail = "txtemail";
    $txtname = "txtname";
    $txtmsg = "txtmessage";$doc = new DOMDocument("1.0");
    $doc->load("xmlorders.xml");
    $root=$doc->getElementsByTagName("orders")->item(0);
    $order = $doc->createElement("order");
    $name = $doc->createElement("name");
    $email = $doc->createElement("email");
    $message = $doc->createElement("message");
    $date = $doc->createElement("createdate");$name->appendChild($doc->createTextNode($txtname));
    $email->appendChild($doc->createTextNode($txtmail));
    $message->appendChild($doc->createTextNode($txtmsg));
    $date->appendChild($doc->createTextNode(date("Y-m-j")+" "+date("G:i:s")));$order->appendChild($name);
    $order->appendChild($email);
    $order->appendChild($message);
    $order->appendChild($date);
    $root->appendChild($order);
    //echo$doc->saveXML();
    $doc->save("xmlorders.xml");
    ?>
      

  4.   


    $txtmail = $_POST["txtemail"];
    $txtname = $_POST["txtname"];
    $txtmsg = $_POST["txtmessage"];if(file_exists('test.xml') === false)
    {
        $fp = fopen('test.xml', 'w+');
        fwrite($fp, '<?xml version="1.0" encoding="UTF-8" ?><orders></orders>');
        fclose($fp);
    }$doc = new DOMDocument('1.0', 'UTF-8');
    $doc->load('test.xml');$order = $doc->createElement('order');$name = $doc->createElement("name");
    $email = $doc->createElement("email");
    $message = $doc->createElement("message");
    $date = $doc->createElement("createdate");$name->appendChild($doc->createCDATASection($txtname));
    $email->appendChild($doc->createCDATASection($txtmail));
    $message->appendChild($doc->createCDATASection($txtmsg));
    $date->appendChild($doc->createCDATASection(date("Y-m-j")+" "+date("G:i:s")));$order->appendChild($name);
    $order->appendChild($email);
    $order->appendChild($message);
    $order->appendChild($date);$doc->documentElement->appendChild($order);$doc->save('test.xml');
    这个已经测试过...
      

  5.   

    6楼结果是
     <?xml version="1.0" encoding="UTF-8" ?> 
    - <orders>
    - <order>
    - <name>
    - <![CDATA[ my name
      ]]> 
      </name>
    - <email>
    - <![CDATA[ my mail
      ]]> 
      </email>
    - <message>
    - <![CDATA[ my message
      ]]> 
      </message>
    - <createdate>
    - <![CDATA[ 2024
      ]]> 
      </createdate>
      </order>
      </orders>
      

  6.   

    不知为什么写xml那么麻烦,用echo 直接把字符串写到指定路径,加上文件命名就可以了, 用这个 DOMDocumentod 不会有点问题复杂化吗?
      

  7.   

    上次给别人调数据用生成的xml用echo就不行,还是用dom组件