simplexml的未定义偏移量错误

时间:2013-05-20 15:06:17

标签: php simplexml

我有一个名为'groups.xml'的XML文件,我想创建一个孩子的孩子。

<?xml version="1.0" encoding="UTF-8"?>
<body>
  <group_no>2</group_no>
  <group id="1">
    <name>Admins</name>
    <backend>1</backend>
    <supplierungen>all</supplierungen>
  </group>
  <group id="2">
    <name>1AFW</name>
    <backend>0</backend>
    <supplierungen>1AFW</supplierungen>
  </group>
</body>

首先,我创建了一个名为“group”的孩子。它没有任何问题,但如果我创建了孩子的“名字”,我会得到以下错误:

  

注意:未定义的偏移量:C:\ xampp \ htdocs \ HLW \ functions \ cr_gr.php中的0

以下是代码:

$xml = simplexml_load_file("../xml/groups.xml");
$res = $xml->xpath("/body");
$no_gr = $res[0]->group_no; 
$res[0]->group_no = $no_gr+1;
$res[0]->addChild("group id=".$res[0]->group_no."");
$res2 = $xml->xpath("/body/group[@id=".$res[0]->group_no."]");
$res2[0]->addChild("name",$_GET['name']);

1 个答案:

答案 0 :(得分:1)

你加入孩子的方式似乎有些奇怪。我建议按以下方式进行:

$res = $xml->xpath("/body");
$no_gr = $res[0]->group_no; 
$res[0]->group_no = $no_gr+1;

$child = $res[0]->addChild("group");
$child->addAttribute($id, $res[0]->group_no);
$child->addChild("name", $_GET['name']);

来自documentation

  

SimpleXMLElement::addChild方法返回一个SimpleXMLElement对象,表示添加到XML节点的子节点。

从该返回值,您可以将所有属性和子项添加到您需要的节点。