2011-10-05 49 views
0

由此可以推斷: Appending data to XML file預謀數據到XML文件

我反而想在前面加上我的新< thumbnail>元素

我有這樣的:

$xmldoc = new DOMDocument(); 
$xmldoc->load('sample.xml'); 



$thumbnail = $xmldoc->createElement('thumbnail'); 
$thumbnail->setAttribute('preview', 'This is a preview'); 
$thumbnail->setAttribute('previewURL', 'This is a URL'); 
$thumbnail->setAttribute('thumb', 'This is a Thumb'); 

$title = $xmldoc->createElement('title'); 
$title->appendChild($xmldoc->createCDATASection('This is Title')); 
$thumbnail->appendChild($title); 


$description = $xmldoc->createElement('description'); 
$description->appendChild($xmldoc->createCDATASection('This is Description')); 
$thumbnail->appendChild($description); 


$xmldoc->getElementsByTagName('thumbnails')->item(0)->appendChild($thumbnail); 
$xmldoc->save('sample.xml'); 

這是工作得很好,但它是<thumbnail>追加</thumbnails> </mainXML>

我現在反而喜歡在打開< thumbnails>之後加上它。

目前的XML是在這裏:http://pastebin.com/4pWnFVfq

正如你可以看到它在底部附加像我描述。

我該怎麼做?

+0

[這個問題](http://stackoverflow.com/questions/2092012/simplexml-how-to-prepend-a-child-in-a-node)可能會幫助你。 –

+0

@XavierHolt這是一個很好的鏈接。我怎麼才能從這個函數中使它工作到我的代碼?請回復 – Karem

+0

這是執行此工作的[insertBefore](http://php.net/manual/en/domnode.insertbefore.php)函數。你應該仔細檢查文檔(鏈接),並且肖恩的答案 - 它看起來對我有用... –

回答

1

以下應該做你正在尋找的東西。

<?php 

$xmldoc = new DOMDocument(); 
$xmldoc->load('sample.xml'); 



$thumbnail = $xmldoc->createElement('thumbnail'); 
$thumbnail->setAttribute('preview', 'This is a preview'); 
$thumbnail->setAttribute('previewURL', 'This is a URL'); 
$thumbnail->setAttribute('thumb', 'This is a Thumb'); 

$title = $xmldoc->createElement('title'); 
$title->appendChild($xmldoc->createCDATASection('This is Title')); 
$thumbnail->appendChild($title); 


$description = $xmldoc->createElement('description'); 
$description->appendChild($xmldoc->createCDATASection('This is Description')); 
$thumbnail->appendChild($description); 
$thumbs = $xmldoc->getElementsByTagName('thumbnails')->item(0); 
$first_thumb = $thumbs->getElementsByTagName('thumbnail')->item(0); 

$thumbs->insertbefore($thumbnail, $first_thumb); 

$xmldoc->save('sample.xml'); 
?> 
+0

這和我目前的做法一樣 – Karem

+0

這會在 Karem