使用simplexml将节点放入另一个节点

时间:2014-02-20 15:54:11

标签: php xml simplexml

这是我的基础xml结构:

<Module_Files>  
        <Category name="categorie1">
        </Category>
</Module_Files>

我想在类别节点中添加另一个节点,如下所示:

<Module_Files>  
        <Category name="categorie1">
             <file lan="fr>
                 <title>  ....  </title>
                 <path>   ....  </path>
             </file>
        </Category>
</Module_Files>

但我不能

这是我的代码:

$xmlFile->xpath("//Category[@name='" . $categoryName . "']"); //$categoryName = "categorie1"

$nodeFile = $xmlFile->addChild("file", "");
$nodeFile->addAttribute("lang", (string) $data["lang"]);   
$nodeFile->addChild("titre", (string) $data["titre"]);
$nodeFile->addChild("path", (string) $data["path"]);

此代码在类别节点之后添加文件节点,而不是像这样:

<Module_Files>  
   <Category name="categorie1">
   </Category>
   <file lan="fr>
      <title>  ....  </title>
      <path>   ....  </path>
      </file>
</Module_Files>

如何将文件节点放入类别节点?

1 个答案:

答案 0 :(得分:1)

您没有指定xpath的结果,因此您将child添加到root元素,而不是category元素。试试这个:

$categories = $xmlFile->xpath("//Category[@name='" . $categoryName . "']"); //$categoryName = "categorie1"

if (isset($categories[0])) {
  $nodeFile = $categories[0]->addChild("file", "");
  $nodeFile->addAttribute("lang", (string) $data["lang"]);   
  $nodeFile->addChild("titre", (string) $data["titre"]);
  $nodeFile->addChild("path", (string) $data["path"]);
} else {
  echo 'Not found Category node with name: '.$categoryName.PHP_EOL;
}