2013-02-09 51 views
-1

所以我有以下XML結構:PHP的XML編輯現有的XML,並添加數據

<Application> 
     <Properties> 
      <Property> 
       <Name>blabla</Name> 
       <Value>123</Value> 
      </Property> 
     </Properties> 
</Application> 

,我想添加一個「屬性」孩子用PHP。 一個例子可以是:

<Application> 
     <Properties> 
      <Property> 
       <Name>blabla</Name> 
       <Value>123</Value> 
           <Name>example test</Name> 
       <Value>another value</Value> 
      </Property> 
     </Properties> 
</Application> 

這裏是我當前的PHP代碼:

<?php 
    $xml = simplexml_load_file("Application.xml"); 

    $sxe = new SimpleXMLElement($xml->asXML()); 

    $properties = $sxe->addChild("Property"); 
    $properties->addChild("Name", "namehere"); 
    $properties->addChild("Value", "random value here"); 

    $sxe->asXML("Application.xml"); 
?> 

,但它只是將其添加到XML的結束。在</Application>之後,那不是我們想要的。

我希望它將它添加到<Property>孩子中。

有人可以幫助我嗎?

+2

'$ sxe->屬性 - >的addChild( 「該物業」)'是你想要寫什麼。 – didierc 2013-02-09 15:06:34

+0

@didierc dosnt在您的示例結果中工作 – Christoffer 2013-02-09 15:16:29

+0

,只有一個'Property'元素具有兩次相同的屬性集,是您真正想要的嗎? – didierc 2013-02-09 15:38:42

回答

0

您需要遍歷<Application>標籤到<Properties>標籤。使用xpath()

$propNode = $sxe->xpath('/Application/Properties'); 
$property = $propNode[0]->addChild('Property'); 

這裏的phpfiddle

+0

嗯不能似乎得到它的工作 – Christoffer 2013-02-09 15:16:48

+0

更新我的答案與一個工作的例子。在我的xpath中還有一個額外的'/'。 – Achrome 2013-02-09 15:31:54

+0

給了我這個錯誤: 注意:未定義的偏移量:0在C:\ xampp \ htdocs \ account \ register \ signup.php上線287 致命錯誤:調用成員函數addChild()在線287上的C:\ xampp \ htdocs \ account \ register \ signup.php 編輯:nvm修復了它,它的工作原理非常感謝! – Christoffer 2013-02-09 16:41:27

0

如果你想給你的孩子添加到特定的元素,你必須這麼說:

$properties = $sxe->Properties->addChild("Property"); 
        ^^^^^^^^^^ 

Online Demo

如果有不止一個Properties元素,你想指定不是第一個,你可以使用從零開始的數組索引,例如0爲第二個的第一個(默認),1

$properties = $sxe->Properties[1]->addChild("Property"); 

Online Demo