2014-12-13 75 views
1

我正在使用Mark Riehl的書XML and Perl,其中一個入門程序是使用XML::Simple,我使用CPAN下載到Fedora。XML ::簡單,形式不正確(無效令牌)令牌在線

我不斷收到此錯誤

not well-formed (invalid token) at line 1 

我的加工成型的周圍了,而XML文檔,然後裝了另一個XML文件,並得到了完全相同的錯誤。

這個模塊有什麼問題嗎?

[[email protected] xmlandperl]$ cat page39convert_xml_to_html_simple 
#!/usr/bin/perl 
use strict ; 
use warnings ; 

use XML::Simple ; 
my $simple = XML::Simple ->new(); 
my $struct = $simple->XMLin("./symbolconfig.xml") ; 
[[email protected] xmlandperl]$ ./page39convert_xml_to_html_simple 
not well-formed (invalid token) at line 1, column 5, byte 5 at /usr/lib/perl5/vendor_perl/XML/Parser.pm line 187. 
[[email protected] xmlandperl]$ 
+2

什麼是第1行,你的XML文檔的5列?聽起來像你有一些無效的XML。錯誤消息非常清楚。 – 2014-12-13 18:06:32

+0

我不得不將doc類型添加到xml的頂部 - 它加載 – capser 2014-12-13 18:25:43

+1

儘管* XML和Perl *是一本相當老的書,但它的大部分內容仍然非常相關。不是XML上的東西::雖然簡單 - XML :: Simple應該避免。只是跳過這些部分。 – tobyink 2014-12-13 20:41:53

回答

1

按設計 - 無效的XML應該是致命的。在遇到錯誤時處理XML應該中止。

發生這種情況時,大多數用於解析XML的模塊將爲die。您可以通過使用eval塊來捕獲此信息,但是您不能通過解析XML來「推送」,因爲XML規範說不。

你真正應該做的是反饋給給你XML的人,並用捲起的文檔複製頭部。

http://www.w3.org/TR/REC-xml/#dt-fatal

有一個XML驗證在這裏了: http://www.w3schools.com/xml/xml_validator.asp

本頁面也重新迭代:

W3C的XML規範規定的程序應該停止處理的XML文檔如果發現錯誤。

然而,如果沒有你的XML的樣本,我只能重複你的錯誤說什麼: not well-formed (invalid token) at line 1, column 5, byte 5

相關問題