如何在php中将childs附加到xml

时间:2015-03-03 10:04:46

标签: php xml append

我正在用PHP编写一种小型CMS。一切都运作良好,但我从未使用过XML,通常我使用SQL DB或CSV。现在我必须将一些元素附加到XML表。我有一个完全覆盖文件的功能。我想追加数据。

这是“写”的功能

function scrivi() {
    if ( isset($_POST["titolo"])) {
        $doc = new DOMDocument(); 
        $doc->formatOutput = true; 
        $r = $doc->createElement( "eventi" ); 
        $doc->appendChild( $r );

        $b = $doc->createElement( "evento" ); 
        $titolo = $doc->createElement( "titolo" ); 
        $titolo->appendChild( $doc->createTextNode( $_POST['titolo'] ) ); 
        $b->appendChild( $titolo ); 
        $data = $doc->createElement( "data" ); 
        $data->appendChild( $doc->createTextNode( $_POST['data'] ) ); 
        $b->appendChild( $data ); 
        $desc = $doc->createElement( "desc" ); 
        $desc->appendChild( $doc->createTextNode( $_POST['desc'] ) ); 
        $b->appendChild( $desc ); 

        $r->appendChild( $b ); 

        $doc->save("eventi.xml");
    }
}

这是一个解释性的XML

<?xml version="1.0"?>
<eventi>
  <evento>
    <titolo>Festa</titolo>
    <data>02/03/1993</data>
    <desc>Centro Sociale Asilo Politico presenta 99 posse</desc>
  </evento>
  <evento>
    <titolo>Festona</titolo>
    <data>15/08/1996</data>
    <desc>Falò alla baia: solite facce, solita feccia</desc>
  </evento>
</eventi>

我还有一个显然可以从XML读取数据的函数。 我可以使用“read”函数,从“write”内部,所以我可以读取内容,一次一个元素(使用foreach)并将其插入要写入的元素队列($ b)。它有效,但我对此并不满意,我想简单地追加,或者至少在一段时间内阅读文件的全部内容。我试着在这里和那里复制一些片段,但我找不到一个我完全理解的功能,而且我需要理解。

希望我具体, 抱歉英文不好。

1 个答案:

答案 0 :(得分:-1)

PHP在SimpleXML下有一个名为addChild();

的函数

它会像这样工作

$d = new SimpleXMLElement("node");
$add = $d->addChild("evento");
$add->addChild("titolo" , $titolo);
$add->addChild("data" , $data);
$add->addChild("desc" , $desc);

确实如此。