如何在XML :: GDOME中调试此错误的来源?

时间:2008-12-09 10:31:06

标签: xml perl

我正在使用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 个答案:

答案 0 :(得分:1)

文档说:

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

创建一个新的xml文档。这将是   在$ nsURI命名空间中,如果$ nsURI是   已定义,其文档元素将   名字叫$ name。

现在,您的示例使用""作为命名空间。这与undefined不同,那是空字符串,它是定义的。它抱怨空字符串不是有效的命名空间。请尝试使用undef

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

答案 1 :(得分:0)

在那里调用的XML :: GDOME :: DOMImplementation :: createDocument是一个C例程,因此它中遇到的错误就像从调用它的Perl代码行一样报告。 该错误将由gdome_di_createDocument设置错误代码14引起。

我没有收到您报告的错误:

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

您可以尝试传递undef而不是“”;它在调用gdome_di_createDocument时将undef转换为NULL。

答案 2 :(得分:0)

当我尝试

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行(“”,“”,“”),它工作正常。

是否有任何特殊原因或触发器可能导致错误触发错误?