2014-11-15 71 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