2011-07-06 66 views
2

創建多個屬性,我想通了,如何創建一個DOM對象XML用下面的代碼(一部分):一個元素

$xml_item = $xml->createElement('item'); 
$xml_location = $xml->createElement('location'); 

$xml_item->setAttribute('item-id', 'abcd'); 
$xml_item->appendChild($xml_location); 
$xml_location->setAttribute('location-id', '1234'); 
$xml_location->appendChild($xml_quantity); 
$xml_quantity = $xml->createElement('quantity', '0'); 

給出:

<item item-id="abcd">  
    <location location-id="1234"> 
     <quantity>0</quantity>    
    </location> 
</item> 

我想保留加入不同屬性的多個項目元素獲得這樣的事情:

<item item-id="abcd">  
    <location location-id="1234"> 
     <quantity>99</quantity>    
    </location> 
</item> 
<item item-id="qwer">  
    <location location-id="1234"> 
     <quantity>55</quantity>    
    </location> 
</item> 

但我有一個很難搞清楚了這一點。如何使用相同的變量$ xml_item創建多個具有上述不同屬性的「item」元素條目(即abcd和qwer)?在創建「abcd」後,當我做另一個$ xml_item-> setAttribute('item-id','qwer')時,似乎只是寫了第一個。我是否應該用不同的變量名稱(例如$ xml_item1,_item2等)創建「$ xml_item」的多個副本(但這看起來不合理),或者我可以以某種方式重複使用相同的變量($ xml_item)來創建多個項?我的想法是創建儘可能多的「item」元素,因爲我需要不同的屬性。

+0

你們是否碰巧知道如何將這個對象$ xml轉換爲字符串? – musicliftsme

回答

3

createElement的php.net頁,

除非它被插入與 此節點將不是 文檔中顯示出來(例如)れ>的appendChild()。

所以只要確保在createElement()調用之間繼續追加$xml_item DomDocument對象。
即)$xml->appendChild($xml_item);

+0

謝謝!我想知道這實際上是什麼意思..所以我每次都調用createElement(),然後再調用appendChild()。高超!這是工作。 – musicliftsme

2

我認爲你缺少的是$xml-item是一個對象的引用 - 每次打電話給你做出被調用該對象的同一個實例它的功能之一,因此setAttribute將覆蓋任何你之前設定的價值。爲要添加的每一項一次 -

要創建你需要再次調用

$xml_item = $xml->createElement('item'); 

對象的新實例。

您可以使用相同的變量名稱 - $xml-item將引用不同的新項目'item'元素的實例,並且舊實例將不再可訪問(父項$xml除外)。

正如brian_d提到,每次調用createElement後,你將需要調用

$xml->appendChild($xml_item); 

所以所有的項目將出現在父DOM文件內。

0
$img = $doc->createElement("img"); 

    $imgattr = $doc->createAttribute("src"); 

    $imgattr1 = $doc->createAttribute("width"); 

    $imgattr1->value = 300; 

    $imgattr->value = $image['path'];// this the source of my image 

    $img->appendChild($imgattr); 

    $img->appendChild($imgattr1); 

    $b->appendChild($img); 

這裏IMG是元素,我已經加入src和寬度屬性 然後添加屬性的值,並將其添加到元素 如果有任何疑問告訴我,我將分享我的完整