2011-08-17 13 views
7

でPHPを使用してXMLファイルに追加しますファイル。私はsimplexmlを使ってみましたが、動作させることができませんでしたので、answerと同様にbunch他のものをstackoverflowで試しました。しかし、ちょうどそれを働かせることを傾ける。
私はXMLファイルから簡単に読み込み、必要な情報をすべて取得できますが、ギャラリータグを追加する必要があります。以下のコードは機能しません。それはそれを3回挿入する、私はこれを理解していない。は、どのように私はこのようなXMLファイルを持っている好ましくはSimpleXMLを

$data = 'xml/config.xml'; 
// Load document 
$xml = new DOMDocument; 
$xml->load($data); #load data into the element 

$xpath = new DOMXPath($xml); 
$results = $xpath->query('/data/galleries'); 
$gallery_node = $results->item(0); 

$name_node = $xml->createElement('name'); 
$name_text = $xml->createTextNode('nametext'); 

$name_node = $name_node->appendChild($name_text); 

$gallery_node->appendChild($name_node); 

echo $xml->save($data); 

私はこれで失敗した試行がありましたが、これは簡単なものです。基本的には、同じファイル(xml/config.php)にchildsという名前のファイルパスとサムを持つギャラリーを追加したいと思います。

私が言ったように、私はちょっと仕事をしましたが、フォーマットされておらず、ギャラリータグを持っていません。

質問
どのように私は上記のXMLファイルに(子供と)別の<ギャラリー>を挿入していますか?
好ましくはsimpleXMLを使用する場合もあります。

答えて

14

addChild()メソッドを使用できます。

$file = 'xml/config.xml'; 

$xml = simplexml_load_file($file); 

$galleries = $xml->galleries; 

$gallery = $galleries->addChild('gallery'); 
$gallery->addChild('name', 'a gallery'); 
$gallery->addChild('filepath', 'path/to/gallery'); 
$gallery->addChild('thumb', 'mythumb.jpg'); 

$xml->asXML($file); 

のSimpleXMLは「フォーマット」あなたのためのXMLは、しかしきちんとインデントXMLにフォーマットされていないのSimpleXML表現から行くことに複雑なステップではありませんではないだろうと、ここで質問のたくさんで覆われていることに注意してください。

+0

これは機能します!それは私のXMLで3回、何かこれを行うだろうアイデアを出力しますか?それは同じ行にと子供の3つのセットを出力します、これは私の上記のスクリプトでもこれを行いましたか?任意の手がかり? – Anil

+2

あなたはおそらくループで何か間違っているでしょう。あなたが示したことは何も、または私が与えたことは、ギャラリー要素を3回繰り返すことはありません。 – salathe

関連する問題