【问题标题】:SimpleXML puts id in closing tagSimpleXML 将 id 放在结束标记中
【发布时间】:2016-10-17 15:42:00
【问题描述】:

我正在浏览各种文章,如何从 PHP 数组中生成 XML。

使用 SimpleXML 和循环的两篇文章开始工作。

我用过这个:

function array_to_xml( $data, $xml_data ) {
foreach( $data as $key => $value ) {
    if( is_numeric($key) ){
        $key = 'point id="'.$key.'"'; //dealing with <0/>..<n/> issues
    }
    if( is_array($value) ) {
        $subnode = $xml_data->addChild($key);
        array_to_xml($value, $subnode);
    } else {
        $xml_data->addChild("$key",htmlspecialchars("$value"));
    }
}

}

它现在可以工作了。

重点是,我使用多维数组来发送文章列表。你可能猜到了,

<article id="sth">bla</article>

是一个东西。 问题是,这个函数在结束标记中包含 id,所以看起来像这样:

<article id="a-1-0">Example of Naming</article id="a-1-0">

这使得打开和阅读这些(也使用 SimpleXML)变得不可能。

有没有办法配置 SimpleXML 不在结束标签中创建 id?提前谢谢,任何帮助都很有价值。

编辑:

上面的代码片段处理的是点标签。同样的问题在那里,它们看起来像

<point id="0">[...]</point id="0">

【问题讨论】:

  • 你不应该改用addAttribute("$key", htmlspecialchars("$value"))吗?

标签: php xml tags simplexml


【解决方案1】:

你可以这样做:

$el = $xml_data->addChild('point', htmlspecialchars("$value"));
$el->addAttribute('id', $key);

添加孩子后添加属性。

希望我能有所帮助。

【讨论】:

  • 其中的一部分。问题是,我有两个这样的案例。我有几个点和几篇文章,一开始没有出来,道歉。
  • 它是
  • 对不起。我不明白。这没有解决您的问题?
  • @plachty 你能用一些示例 XML 放置一个 pastebin 吗?
猜你喜欢
  • 2012-02-11
  • 2016-01-27
  • 2012-03-09
  • 2012-04-01
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多