2011-11-10 90 views
3
//create a simple xml object 
$xml = new SimpleXMLElement('some valid xml'); 

//add a my_elements node 
$xml->addChild('my_elements'); 

//an array of elements that will be added to to my_elments 
$my_elements = array('element_1', 'element_2', 'element_3'); 

foreach($my_elements as $element){ 
    //my_element is only added once as shown below 
    $xml->my_elements->addChild('my_element'); 

    $xml->my_elements->my_element->addChild('something', $element); 
} 

我想這看起來是這樣的(以XML格式顯示爲便於閱讀)添加子元素具有相同的名稱使用簡單的XML

<xml> 
    <my_elements> 
     <my_element> 
      <something>element_1</something> 
     </my_element> 
     <my_element> 
      <something>element_2</something> 
     </my_element> 
     <my_element> 
      <something>element_3</something> 
     </my_element> 
    </my_elements> 
</xml> 

但是我所得到的是更像這樣的東西

<xml> 
    <my_elements> 
     <my_element> 
     <something>element_1</something> 
     <something>element_2</something> 
     <something>element_3</something> 
     </my_element> 
    </my_elements> 
</xml> 

當使用addChild具有相同名稱時,是否可以創建單獨的子節點?

+0

您需要將子元素添加到新添加的元素中,而不是添加到現有元素中。 – hakre

+0

通過使用返回的元素,請參閱我的答案 – hakre

回答

5

是的,你只需要添加childs到新添加的元素,而不是現有的。請參閱http://php.net/manual/en/simplexmlelement.addchild.php

foreach($my_elements as $element){ 
    //my_element is only added once as shown below 
    $new_my_element = $xml->my_elements->addChild('my_element'); 
    $new_my_element->addChild('something', $element); 
} 
相關問題