2014-11-15 109 views
0

我有這個XML文件:編寫XML標籤用SimpleXML

<?xml version="1.0"?> 
<products> 
<product> 
    ... some nodes 
</product> 

<product> 
    ... some nodes 
</product> 

<product> 
    ... some nodes 
</product> 
</products> 

我寫這個PHP代碼:

<?php 
.... 
.... 
$xml=simplexml_load_file("myfile.xml") or die("Error: Cannot create object"); 

foreach ($xml->xpath("/products/product") as $prod) 
{ 
    $xmlname = $xml->addChild("name",$name); 
    $xmlid = $xml->addChild("id",$id); 
    $xmlprice = $xml->addChild("price",$price); 
} 
$xml->asXML ("result_file.xml"); 
?> 

這工作,但不是我想要的。它使用新節點創建文件'result_file.xml':$ name,$ id和$ price。問題是,所有這些節點都在這樣的XML文件的末尾插入:

<?xml version="1.0"?> 
<products> 
<product> 
    ... some nodes 
</product> 

<product> 
    ... some nodes 
</product> 

<product> 
    ... some nodes 
</product> 
    <name>$name</name> 
    <id>$id</id> 
    <price>$price</price> 
    <name>$name</name> 
    <id>$id</id> 
    <price>$price</price> 
    <name>$name</name> 
    <id>$id</id> 
    <price>$price</price> 
</products> 

,但我想他們的產品節點之後插入所有這些節點。 例如,我想獲得:

<?xml version="1.0"?> 
<products> 
<product> 
    <name>$name</name> 
    <id>$id</id> 
    <price>$price</price> 
    ... some nodes 
</product> 

<product> 
    <name>$name</name> 
    <id>$id</id> 
    <price>$price</price> 
    ... some nodes 
</product> 

<product> 
    <name>$name</name> 
    <id>$id</id> 
    <price>$price</price> 
    ... some nodes 
</product> 
</products> 

回答

4

我以爲你是這裏的問題是,您要添加的子XML元素到根$ XML。

看你的代碼,如果你要改變如下:

foreach ($xml->xpath("/products/product") as $prod) { 
    $xmlname = $prod->addChild("name",$name); 
    $xmlid = $prod->addChild("id",$id); 
    $xmlprice = $prod->addChild("price",$price); 
} 
$xml->asXML ("result_file.xml"); 

這應該工作。

$ prod被視爲每個的實例<product>

+0

是的,你是對的。 – splunk