我正在尝试将数组转换为php中的xml数据。我正在使用xmlserializer pear包。我的阵列是:
$arr=array(1000=>'name is john');
当我使用此代码将其转换为xml时:
options=array ('mode'=>'simplexml','addDecl'=>true,'indent'=>' ','rootName'=>'names');
$serializer = new XML_Serializer($options);
$result = $serializer->serialize($arr);
if($result == true)
$data=$serializer->getSerializedData();
echo $data;
我得到以下回复:
<?xml version="1.0"?>
<names>name is john</names>
但我想要这种回应:
<?xml version="1.0"?>
<names>
<1000>name is john</1000>
</names>
谁能告诉我的错误在哪里?
答案 0 :(得分:0)
我想这是因为XML中的数字值不允许使用元素名称。但是,如果你真的想拥有像上面那样的“xml风格”输出(除了它不是真正的xml),你必须绕过库并手动编码。我想这会为你做到:
public function xml_encode($array, $tag = "root"){
$result = '<'.$tag.'>';
foreach($array as $key => $value){
if(is_array($value)){
$result.=xml_encode($value, $key);
}else{
$result .= '<'.$key.'>'.$value.'</'.$key.'>';
}
}
$result .= '</'.$tag.'>';
return $result;
}