2010-01-10 19 views
27

Yeni bir XML dosyası oluşturup bunu sunucuma yazmalıyım. Bu yüzden, yeni bir XML dosyası oluşturmanın, ona bazı temel düğümler yazmanın, kaydetmenin en iyi yolunu arıyorum. Ardından tekrar açın ve daha fazla veri yazın.Yeni XML dosyası oluştur ve ona veri yazıyor mu?

Dosyayı kaydetmek için file_put_contents() kullanıyorum. Ancak, yeni bir tane oluşturmak ve bazı temel düğümler yazmak için en iyi yöntemden emin değilim.

Fikirler?

cevap

58

mükemmel bir seçimdir. XML belgelerini oluşturmak ve değiştirmek için özel olarak tasarlanmış bir modül. Bir belgeyi sıfırdan oluşturabilir veya mevcut belgeleri (veya dizeleri) açabilir ve yapılarında gezinebilir ve değiştirebilirsiniz.

$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"); 

tekrar açıp yazmak için:

$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

nasıl her şeyi tek satırda yazılırken ziyade, benim belgede XML yapısını duruyorsun? –

+4

DOMDocument nesnesindeki "formatOutput" özelliğini ayarlayın: $ xml-> formatOutput = true'. http://ca.php.net/manual/en/class.domdocument.php#domdocument.props.formatoutput – zombat

+0

biraz geç ama eğer birisi bir eğitim okumak istiyorsa burada bulabilirsiniz. https://programmerblog.net/how-to-generate-xml-files-using-php/ –

13

PHP XML Manipulation için çeşitli kütüphaneler vardır.

Document Object Model (DOM) yaklaşımı (W3C standardıdır ve Web Tarayıcısı veya Java vb. Gibi başka ortamlarda kullanmışsanız tanıdık olmalıdır).

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

aşağıdaki gibi önce DOM rastlamak olmasınız bile belgeleri oluşturmasına izin verir, bu modelin birçok dilleri/ortamlarında kullanılan olarak bunun biraz zaman yatırım değer.

2

FluidXML ile bir XML belgesini kolayca oluşturabilir ve saklayabilirsiniz.

$doc = fluidxml(); 

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

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

Bir dosyadan belge yüklemek aynı derecede basittir.

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

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

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