Как я могу отладить источник этой ошибки в XML :: GDOME? - PullRequest
1 голос
/ 09 декабря 2008

Я использую GDOME.pm и в моем скрипте есть эта строка:

my $doc = XML::GDOME->createDocument("","","");

Я не могу понять, почему это происходит с этой ошибкой:

NAMESPACE_ERR at /usr/lib/perl5/site_perl/5.6.1/i586-linux/XML/GDOME.pm line 103.

, что в основном указывает на:

sub createDocument {
  my $class = shift;
  return $di->createDocument(@_); ## it points to this LINE!!
}

Существует ли какой-либо инструмент или что-то, что позволило бы мне больше узнать, какие пространства имен действительно вызывают эту ошибку?

Тем временем мое решение идет по линии лба, встречаясь с клавиатурой, но это, кажется, не работает, за исключением того, что вызывает головную боль и случайные формы, появляющиеся на моем лбу.

спасибо ~ Стив

Ответы [ 3 ]

1 голос
/ 09 декабря 2008

В документации написано:

$doc = XML::GDOME->createDocument( $nsURI, $name, $dtd );

Создает новый XML-документ. Это будет в пространстве имен $ nsURI, если $ nsURI определяется, и его элемент документа будет иметь имя $ name.

Теперь ваш пример использует "" для пространства имен. Это не то же самое, что undefined, это пустая строка, и она определена. Он жалуется, что пустая строка не является допустимым пространством имен. Попробуйте использовать undef вместо:

my $doc = XML::GDOME->createDocument(undef,"","");
0 голосов
/ 10 декабря 2008

хорошо, когда я пытаюсь

my $doc = XML::GDOME->createDocument(undef,"","");

теперь я получаю это предупреждение. что они значат?

** CRITICAL **: file gdome-xml-element.c: line 235 (gdome_xml_el_setAttribute): assertion `value != NULL' failed.

** CRITICAL **: file gdome-xml-element.c: line 235 (gdome_xml_el_setAttribute): assertion `value != NULL' failed.

** CRITICAL **: file gdome-xml-element.c: line 235 (gdome_xml_el_setAttribute): assertion `value != NULL' failed.

и странно то, что namespace_err, кажется, разрешено, но это странно, потому что раньше у меня были другие функции, имеющие строку createDocument ("", "", ""), и она прекрасно работает.

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

0 голосов
/ 09 декабря 2008

XML :: GDOME :: DOMImplementation :: createDocument, который вызывается там, есть подпрограмма C, поэтому обнаруженные в ней ошибки сообщаются как будто из строки кода Perl, который ее вызвал. Эта ошибка будет вызвана кодом ошибки установки gdome_di_createDocument 14.

Я не получаю сообщение об ошибке:

 perl -we'use XML::GDOME; XML::GDOME->createDocument("","","")'

Вы можете попробовать передать undef вместо ""; он переводит undef в NULL при вызове gdome_di_createDocument.

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