看板 Perl 關於我們 聯絡資訊
小弟想寫一個 把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
lgen7604:(1)你沒有附上完整的code 無法重現問題 (2)從你的說明實 07/19 21:26
lgen7604:在看不出11":"Security"是怎麼來的? 07/19 21:27