Как добавить childs в xml в php

0

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

Это функция "write"

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
    Извините, решил ..
Теги:
append

1 ответ

-1

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

Это будет работать так

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

Это действительно так.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню