在根节点之后将节点和属性添加到Array2XML

时间:2016-12-10 10:42:00

标签: php xml nodes

我正在使用this link中的Array2XML,效果很好!

但是我需要在输出之前添加一些节点。我需要我的结构是这样的:

<clients>
   <client>             -->Need to add
      <id>myid</id>     -->Need to add
      <name>name</name> -->Need to add
      <items>           -->Need to add
         <item>
            <title>itemtitle</title>
            <date>itemdate</date>
         </item>
      </items>
    </client>
<clients>

但我能得到的是:

<clients>
   <item>
      <title>itemtitle</title>
      <date>itemdate</date>
    </item>
 <clients>

ROOT NODE clients和节点item我可以输出,但是如何添加节点client和属性idname以及子节点节点items之前的item

这是php函数,我想我需要进行更改,但没有成功:

public static function &createXML($node_name, $arr=array()) {

    $xml = self::getXMLRoot();
    $xml->appendChild(self::convert($node_name, $arr));     

    self::$xml = null;    // clear the xml node in the class for 2nd time use.
    return $xml;
}

我试过这个,但它不起作用......

public static function &createXML($node_name, $arr=array()) {

    $xml = self::getXMLRoot();
    $clientname='client';
    $client = $xml->createElement($clientname);
    $xml->appendChild(self::convert($node_name, $arr));     

    self::$xml = null;    // clear the xml node in the class for 2nd time use.
    return $xml;
}

如何在项目循环之前添加此节点和属性?

非常感谢!

1 个答案:

答案 0 :(得分:0)

好吧,经过一番头疼之后,我得到了它......

我只需要编辑到这个:

public static function &createXML($node_name, $arr=array()) {

    $xml = self::getXMLRoot();

    $clients = $xml->createElement("clients");
    $xml->appendChild($clients);

    $client = $xml->createElement("client");
    $clients->appendChild($client);

    $id = $xml->createElement('id', 'myid');
    $client->appendChild($id);
    $name = $xml->createElement('name', 'myname');
    $client->appendChild($name);

    $client->appendChild(self::convert($node_name, $arr));      

    self::$xml = null;    // clear the xml node in the class for 2nd time use.
    return $xml;
}