添加子项时,会抛出此错误: 无法添加孩子。 Parent不是XML树的永久成员。 我无法解决这个问题。 这是我的代码:
if($visited=='FIRST')
{
$xml=new SimpleXMLElement("<xml/>");
$topology=$xml->addChild("Topology_Configuration");
$flavor=$topology->addChild("Flavor");
$networks=$topology->addChild("Networks");
$vms=$topology->addChild("VMs");
$vnfs=$topology->addChild("VNFs");
$xml->asXML('saddening.xml');
}
else
{
$xml= simplexml_load_file('saddening.xml');
$Topology_Configuration = new SimpleXMLElement($xml->asXML());
$vmcount=$_POST['arguments']['vmcount'];
$flavor=$Topology_Configuration->Flavor;
$flavor_name=$flavor->addChild($_POST['arguments']['flavorName']);
$Topology_Configuration->asXML('saddening.xml');
}
第一次执行时,会创建文件(如果是部分)。否则,部分被执行。它不能添加孩子并且在行中抛出错误:
$ flavor_name = $ flavor-&GT;的addChild($ _ POST [ '参数'] [ 'flavorNa我']);.请帮忙!!
答案 0 :(得分:0)
第一次,您可以使用示例添加子节点
$new_xml = new SimpleXMLElement("<root></root>");
$new_xml->addAttribute('newAttr', 'value');
$newsIntro = $new_xml->addChild('content');
$newsIntro->addAttribute('type', 'value');
Header('Content-type: text/xml');
echo $new_xml->asXML();
和结果
<?xml version="1.0"?>
<news newAttr="value">
<content type="value"/>
</news
答案 1 :(得分:0)
首次运行的XML会生成如下XML:
<?xml version="1.0"?>
<xml>
<Topology_Configuration>
<Flavor/>
<Networks/>
<VMs/><VNFs/>
</Topology_Configuration>
</xml>
因此,如果您解决问题,可以使用以下内容重现该问题:
$Topology_Configuration = simplexml_load_file($fileName);
$flavor=$Topology_Configuration->Flavor;
$flavor->addChild('abc');
echo $Topology_Configuration->asXml();
结果:
Warning: SimpleXMLElement::addChild(): Cannot add child.
Parent is not a permanent member of the XML tree in
消息有点不对,您只是尝试将元素添加到不存在的元素中。 $Topology_Configuration
包含xml
元素节点,而不是Topology_Configuration
。
以下是两种可能的解决方案:
使用Topology_Configuration
作为根元素创建XML。
$topology =new SimpleXMLElement("<Topology_Configuration/>");
Flavor
$xml = simplexml_load_file($fileName);
$flavor=$xml->Topology_Configuration->Flavor;
$flavor->addChild('abc');