我正在阅读各种文章,如何从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">
答案 0 :(得分:0)
你可以这样做:
$el = $xml_data->addChild('point', htmlspecialchars("$value"));
$el->addAttribute('id', $key);
添加子项后添加属性。
希望我有所帮助。