- <ajaxresponse>
- <item>
- <apellido>xxx</apellido>
- <nombre>zzz</nombre>
- <numero>1</numero>
- </item>
- <item>
- <apellido>xxx</apellido>
- <nombre>zzz</nombre>
- <numero>2</numero>
- </item>
- <item>
- <apellido>xxx</apellido>
- <nombre>zzz</nombre>
- <numero>3</numero>
- </item>
- </ajaxresponse>
Esto lo puedo obtener haciendo esto:
Using perl Syntax Highlighting
my $lista = {
'item' => [
{
'numero' => '1',
'nombre' => 'zzz',
'apellido' => 'xxx'
},
{
'numero' => '2',
'nombre' => 'zzz',
'apellido' => 'xxx'
},
{
'numero' => '3',
'nombre' => 'zzz',
'apellido' => 'xxx'
}
]
};
my $xml = XMLout($lista,RootName=> "ajaxresponse",NoAttr => 1);
'item' => [
{
'numero' => '1',
'nombre' => 'zzz',
'apellido' => 'xxx'
},
{
'numero' => '2',
'nombre' => 'zzz',
'apellido' => 'xxx'
},
{
'numero' => '3',
'nombre' => 'zzz',
'apellido' => 'xxx'
}
]
};
my $xml = XMLout($lista,RootName=> "ajaxresponse",NoAttr => 1);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
En $xml tengo todo el XML generado. Ahora, quiero hacer esto mismo pero no escribiendo el array dinámicamente con datos que obtengo de una consulta SQL, estoy haciendo algo parecido a esto (pero con datos reales):
Using perl Syntax Highlighting
my @numeros = ('1'..'3');
my @otroxml;
foreach(@numeros) {
push @otroxml, {
'item' => [{
numero =>$_,
nombre => 'zzz',
apellido => 'xxx'
}]
}
}
my $xml2 = XMLout(\@otroxml,RootName=> "ajaxresponse",NoAttr => 1, );
my @otroxml;
foreach(@numeros) {
push @otroxml, {
'item' => [{
numero =>$_,
nombre => 'zzz',
apellido => 'xxx'
}]
}
}
my $xml2 = XMLout(\@otroxml,RootName=> "ajaxresponse",NoAttr => 1, );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Si imprimo $xml2, obtengo esto:
- <ajaxresponse>
- <anon>
- <item>
- <apellido>xxx</apellido>
- <nombre>zzz</nombre>
- <numero>1</numero>
- </item>
- </anon>
- <anon>
- <item>
- <apellido>xxx</apellido>
- <nombre>zzz</nombre>
- <numero>2</numero>
- </item>
- </anon>
- <anon>
- <item>
- <apellido>xxx</apellido>
- <nombre>zzz</nombre>
- <numero>3</numero>
- </item>
- </anon>
- </ajaxresponse>
La cosa es que estan apareciendo esos tags: <anon></anon>, el problema es, según estuve revisando, en la forma como se crea el array, por que si hago un "Dump" de la estructura de los arrays, obtengo esto:
para $lista:
Using perl Syntax Highlighting
$VAR1 = {
'item' => [
{
'numero' => '1',
'apellido' => 'xxx',
'nombre' => 'zzz'
},
{
'numero' => '2',
'apellido' => 'xxx',
'nombre' => 'zzz'
},
{
'numero' => '3',
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
}
'item' => [
{
'numero' => '1',
'apellido' => 'xxx',
'nombre' => 'zzz'
},
{
'numero' => '2',
'apellido' => 'xxx',
'nombre' => 'zzz'
},
{
'numero' => '3',
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
y para @otroxml:
Using perl Syntax Highlighting
$VAR1 = {
'item' => [
{
'numero' => 1,
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
};
$VAR2 = {
'item' => [
{
'numero' => 2,
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
};
$VAR3 = {
'item' => [
{
'numero' => 3,
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
};
'item' => [
{
'numero' => 1,
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
};
$VAR2 = {
'item' => [
{
'numero' => 2,
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
};
$VAR3 = {
'item' => [
{
'numero' => 3,
'apellido' => 'xxx',
'nombre' => 'zzz'
}
]
};
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
entonces en vez de obtener una sola $VAR obtengo 3, como podría hacer para que el array que necesito quede de la estructura correcta, o como hago para que el módulo XML::Simple pueda formatearlo de la forma correcta, creo que el problema es como estoy construyendo el array, si alguno puede darme una luz, se lo agradecería