【问题标题】:SimpleXML - Add child with same nameSimpleXML - 添加同名的孩子
【发布时间】:2016-03-16 03:04:58
【问题描述】:

是否可以将具有相同的子元素添加到节点?这将在一个循环中完成,例如:

    foreach ( $nodes as $node => $value )
    {
        $xml->addChild($node, $value);
    }

这样做,具有相同名称的子节点将被覆盖(仅保留最后一个节点)。如果我要使用字符串手动放入子节点,而不是像循环中的变量,它可以正常工作并且所有节点都在那里。

所以目标应该是:

    <response>
        <status>some status</status>
        <status>some status</status>
        <status>some status</status>
    </response>

【问题讨论】:

  • 你的 $nodes 数组是什么样的?在您的示例代码中,您似乎希望它具有相同的键,这是不可能的。
  • 啊,废话。看起来我脑子里放了个屁,我一直在追逐错误的东西。是的,正如你所指出的,这甚至是不可能的。我的数组具有相同的键,当然这是不可能的。所以输出完全是应该的!
  • 我投票结束这个问题作为离题,因为 OP 意识到问题是自相矛盾的

标签: php xml simplexml


【解决方案1】:

好吧,正如 sanderbee 指出的,您的数组结构需要修改,但假设您希望得到这样的结果:

<response>
   <status>1st status</status>
   <status>2nd status</status>
   <status>3rd status</status>
</response>

如果你有这样的数组

$newArray = array('1st status', '2nd status', '3rd status');

下面的代码可以给你上面的xml结果:

$response = $xml->addChild('response'); // I assume you have the $xml variable

foreach($newArray as $x)
{
  $status = $response->addChild('status',$x);
}

【讨论】:

    猜你喜欢
    • 2014-07-09
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多