2010-01-10 11 views
27

Potrzebuję utworzyć nowy plik XML i zapisać go na moim serwerze. Tak więc szukam najlepszego sposobu na utworzenie nowego pliku XML, napisanie do niego kilku podstawowych węzłów, zapisanie go. Następnie otwórz go ponownie i wpisz więcej danych.Utwórz nowy plik XML i napisz do niego dane?

Używam file_put_contents(), aby zapisać plik. Ale, aby utworzyć nowy i napisać kilka podstawowych węzłów, nie jestem pewien najlepszej metody.

Pomysły?

Odpowiedz

58

DOMDocument to świetny wybór. Jest to moduł zaprojektowany specjalnie do tworzenia i manipulowania dokumentami XML. Możesz tworzyć dokumenty od podstaw lub otwierać istniejące dokumenty (lub ciągi) oraz nawigować i modyfikować ich struktury.

$xml = new DOMDocument(); 
$xml_album = $xml->createElement("Album"); 
$xml_track = $xml->createElement("Track"); 
$xml_album->appendChild($xml_track); 
$xml->appendChild($xml_album); 

$xml->save("/tmp/test.xml"); 

Aby ponownie otworzyć i napisać:

$xml = new DOMDocument(); 
$xml->load('/tmp/test.xml'); 
$nodes = $xml->getElementsByTagName('Album') ; 
if ($nodes->length > 0) { 
    //insert some stuff using appendChild() 
} 

//re-save 
$xml->save("/tmp/test.xml"); 
+0

Jak zachować strukturę XML w moim dokumencie, a nie wszystko, co jest napisane w jednym wierszu? –

+4

Ustaw właściwość "formatOutput" na obiekcie DOMDocument: '$ xml-> formatOutput = true'. http://ca.php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput – zombat

+0

jest nieco późno, ale jeśli ktoś chce przeczytać samouczek można znaleźć tutaj. https://programmerblog.net/how-to-generate-xml-files-using-php/ –

13

PHP ma kilka bibliotek do XML Manipulation.

Podejście (DOM) (które jest standardem W3C i powinno być znane, jeśli używasz go w innych środowiskach, takich jak przeglądarka internetowa lub Java itp.). Pozwala na tworzenie dokumentów następująco

<?php 
    $doc = new DOMDocument(); 
    $ele = $doc->createElement('Root'); 
    $ele->nodeValue = 'Hello XML World'; 
    $doc->appendChild($ele); 
    $doc->save('MyXmlFile.xml'); 
?> 

Nawet jeśli nie natknąć DOM przed, to warto zainwestować trochę czasu w nim jako model stosowany jest w wielu językach/środowiskach.

2

Dzięki FluidXML można bardzo łatwo wygenerować i zapisać dokument XML.

$doc = fluidxml(); 

$doc->add('Album', true) 
     ->add('Track', 'Track Title'); 

$doc->save('album.xml'); 

Ładowanie dokumentu z pliku jest równie proste.

$doc = fluidify('album.xml'); 

$doc->query('//Track') 
     ->attr('id', 123); 

https://github.com/servo-php/fluidxml