SimpleXML将id放在结束标记中

时间:2016-10-17 15:42:00

标签: php xml tags simplexml

我正在阅读各种文章,如何从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?提前,任何帮助都很有价值。

编辑:

上面的Code-Snippet正在处理点标记。同样的问题在那里,它们看起来像

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

1 个答案:

答案 0 :(得分:0)

你可以这样做:

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

添加子项后添加属性。

希望我有所帮助。