Perl XML :: DOM проблемы с ASCII XML? - PullRequest
0 голосов
/ 16 июня 2011

Я относительно новичок в Perl, пишу несколько сценариев синтаксического анализа XML.Я сделал два успешно, и это мой третий.Я сталкиваюсь с проблемами, которые, я думаю, связаны с XML-документом, кодируемым ASCII.

Я использую Fedora 14 с httpd / apache / perl

У меня есть

use CGI::Carp qw(fatalsToBrowser);

в моем веб-скрипте, поэтому я вижу ошибки на веб-странице, по большей части, но для следующей ошибки я не вижу никаких ошибок на экране, за исключением общего Apache "500 внутренняя ошибка сервера", ив журнале ошибок httpd просто говорится: «Преждевременный конец заголовков скриптов»

Вот суть кода:

my $cparser = new XML::DOM::Parser;
my $refdoc = $cparser->parse($cfile, ProtocolEncoding => 'US-ASCII');
findmynodes $refdoc; 
...
sub findmynodes
{
my @refnode = $_0->findnodes("/conf:ConfModel");
...

Я уверен, что $ _ [0] ОК, потому что если явыведите $ _0 в файл, который я вижу «XML :: DOM :: Document = ARRAY (0x8bb65b8)»

Я также уверен, что findnodes является виновником.Событие, если я делаю findnodes ("// *"), завершается неудачей.

Кто-нибудь знает, в чем может быть проблема?Как я могу найти больше информации о том, что терпит неудачу?

Спасибо,

Эрик

1 Ответ

3 голосов
/ 16 июня 2011

Немедленный ответ: $_0 - это не $_[0], это скалярная переменная $_0. use strict; скажет тебе это.

Кроме того, если вы можете, не используйте XML :: DOM, XML :: LibXML более свежий, лучше обслуживаемый, более мощный ... вы называете это. ProtocolEncoding также является опасным вариантом, это означает, что вы не доверяете объявлению кодировки в XML. В таком случае я обычно проверяю и, если необходимо, исправляю кодировку перед анализом файла. Таким образом, у меня есть чистый, правильно сформированный файл XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...