这是我的基础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>
如何将文件节点放入类别节点?
答案 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;
}