[问题] XML 转 JSON 格式 问题??

楼主: kuangs (kuangs)   2013-07-17 14:44:24
小弟想写一个 把XML 档案转成 JSON格式
虽然网络上有一些范例 但都无法满足需求
所以自己写了一个程式 但似乎有些问题
小弟资质尚浅 无法了解出了什么问题
XML档 (类似这样的档案 我要抓出name 把它变成JSON)
<menu>
<name>Status</name>
<child>
<menu>
<name>System</name>
</menu>
<menu>
<name>Link</name>
</menu>
</child>
</menu>
<menu>
<name>Setup</name>
<menu>
依上面的的XML 我预计出来会变成
{"0":Status,"11":"Security","Status":["System","Link"],"1":Setup}
PERL
foreach my $data_tmp (<FILE>)
{
if ($data_tmp =~ m/<name>/)
{
$data_tmp =~ s/<name>//g;
$data_tmp =~ s/<\/name>//g;
$data_tmp =~ s/^\s+//g;
$data_tmp =~ s/\s+$//g;
$tmp = $data_tmp;
}
if ($data_tmp =~ m/<child>/ && $child_check eq 0)
{
$child_check = 1;
$data{$keyword}=$tmp;
$fkeyword = $tmp;
my $tmp_B = $fkeyword;
$tmp_B =~ s/\s+/-/g;
eval('@'.$tmp_B.'=()');
$keyword++;
}elsif ($data_tmp =~ m/<\/child>/ && $child_check eq 1)
{
$child_check = 0;
my $tmp_C = $fkeyword;
$tmp_C =~ s/\s+/-/g;
eval('$data{$fkeyword}=\@'.$tmp_C);
@child=();
$fkeyword='';
}elsif ($child_check eq 1 && $data_tmp !~ m/>/ && $tmp ne '')
{
my $tmp_A = $fkeyword;
$tmp_A =~ s/\s+/-/g;
eval('push @'.$tmp_A.',$tmp');
$tmp = '';
}
}
my $json = encode_json \%data;
print $json;
实际上跑出来
{"Web":134677984,"11":"Security","Status":["System","Link"]}
(只贴一部份资料 资料太多)
会看到 Web 的资料变成 一串数字 但Status 的资料却又正常
想请问各位 有人知道发生了什么问题吗???
谢谢
作者: lgen7604   2013-07-19 21:26:00
(1)你没有附上完整的code 无法重现问题 (2)从你的说明实在看不出11":"Security"是怎么来的?

Links booklink

Contact Us: admin [ a t ] ucptt.com