2014-12-13 57 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

相关问题