Числовые значения в теге xml - PullRequest
0 голосов
/ 24 апреля 2011

Я пытаюсь преобразовать массив в данные XML в php. Я использую пакет груши xmlserializer для этого. Мой массив:

$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 голосов
/ 19 февраля 2013

Полагаю, это связано с тем, что числовые значения не допускаются именами элементов в 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;
}
...