2014-12-13 16 views
1

Я пользуюсь книгой XML and Perl от Марка Риля, и одна из первых вводных программ работает с XML::Simple, которую я загрузил в Fedora с помощью CPAN.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, столбец 5 документа XML? Похоже, что у вас есть некорректный XML. Сообщение об ошибке довольно ясно. –

+0

Мне пришлось добавить тип документа в начало xml - он загружает – capser

+1

Хотя * XML и Perl * - довольно старая книга, большая часть из них по-прежнему весьма актуальна. Не следует использовать материал XML :: Simple, хотя - XML ​​:: Simple следует избегать. Просто пропустите эти части. – tobyink

ответ

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