xml标记中的数字值

时间:2011-04-24 06:53:32

标签: php xml arrays xmlserializer

我正在尝试将数组转换为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>

谁能告诉我的错误在哪里?

1 个答案:

答案 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;
}