Как добавить childs в xml в переполнении стека

Я пишу что-то вроде маленькой CMS на PHP. Все работает хорошо, но я никогда не работал с 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). Это работает, но я не рад этому, я хотел бы просто добавить или хотя бы прочитать все содержимое файла через некоторое время. Я попытался скопировать некоторые фрагменты здесь и там, но я не нашел функции, которую я полностью понимаю, и мне нужно понять.

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

0

Решение

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

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

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

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

-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector