2015-03-03 7 views
0

Я пишу немного CMS в PHP. Все работает хорошо, но я никогда не работал с XML, обычно я использую SQL DB или CSV. Теперь я должен добавить некоторые элементы в XML-лист. У меня есть функция, полностью перезаписывающая файл. Я хотел бы добавить данные.Как добавить дочерние элементы в xml в php

Это функция "записи"

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. Я могу использовать функцию «читать», изнутри «писать», поэтому я могу читать содержимое, один элемент во времени (с помощью foreach) и вставлять его в очередь элемента для записи ($ b) , Это работает, но я не доволен этим, я бы хотел просто добавить или, по крайней мере, прочитать все содержимое файла через некоторое время. Я пытался копировать некоторые фрагменты здесь и там, но я не нашел функцию, которую я полностью понимаю, и мне НЕОБХОДИМО понять.

Надеюсь, что я был конкретным, Извините за плохой английский.

+0

Извините, решено .. – user3179096

ответ

-1

PHP имеет функцию под SimpleXML, называемую addChild();

Это будет работать, как этого

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

То оно на самом деле.