[問題] XML 轉 JSON 格式 問題??

看板Perl作者 (kuangs)時間12年前 (2013/07/17 14:44), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
小弟想寫一個 把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 的資料卻又正常 想請問各位 有人知道發生了甚麼問題嗎??? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.51.217.233

07/19 21:26, , 1F
(1)你沒有附上完整的code 無法重現問題 (2)從你的說明實
07/19 21:26, 1F

07/19 21:27, , 2F
在看不出11":"Security"是怎麼來的?
07/19 21:27, 2F
文章代碼(AID): #1HvZrBdj (Perl)
文章代碼(AID): #1HvZrBdj (Perl)