使用SimpleXml编写xml标记

使用SimpleXml编写xml标记,xml,simplexml,Xml,Simplexml,我有一个xml文件: <?xml version="1.0"?> <products> <product> ... some nodes </product> <product> ... some nodes </product> <product> ... some nodes </product> </products> ... 一些节点 ... 一些节点 .

我有一个xml文件:

<?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>

... 一些节点
... 一些节点
... 一些节点
$name
$id
美元价格
$name
$id
美元价格
$name
$id
美元价格
但是我想在它们的产品节点之后插入所有这些节点。 例如,我想获得:

<?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>

$name
$id
美元价格
... 一些节点
$name
$id
美元价格
... 一些节点
$name
$id
美元价格
... 一些节点

我认为您在这里遇到的问题是将子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被视为每个

的一个实例,我认为您在这里遇到的问题是将子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被视为每个