我想为一个有许多字段数组生成XML,并将单个XML元素中的字段设置为该元素的属性。
<?php
$rs=array();//values come in $rs from database, it has many fields
$doc = new DOMDocument();
$doc->formatOutput = true;
$root = $doc->createElement( "slides" );
$doc->appendChild( $root );
$firstchild = $doc->createElement( "device" );
$fs=$doc->appendChild( $firstchild );
foreach( $rs as $key=>$value ){
$fs->setAttribute($key,$value);
}
$xml_string = $doc->saveXML();
echo $xml_string;
但这对我不起作用,它给我一个错误,如:
DOMElement:setAttribute()要求参数2为字符串,但给定数组
我的$rs数组结构如下:
Array
(
[0] => Array
(
[id] => 1
[name] => dfd
[width] => 2
[height] => 1
[resolution] =>
[space] =>
)
)
,我希望输出如下:
<slides>
<device id="12" name="mydevice" color="red" .....and so on></device>
</slides>
3条答案
按热度按时间tez616oj1#
您犯了一些错误,主要是您将子元素附加到Document而不是父元素
working example
ct2axkht2#
您需要创建每个属性并将其分配给正确的节点,如下所示:
0lvr5msh3#
$rs变量是一个记录数组,其中一个元素是字段数组,因此需要两个嵌套循环。
外部循环迭代记录并为每个记录创建一个
device
元素节点。内部循环迭代字段并添加属性。输出量: