Perl 尝试在XML::LibXML中规范化XML片段时出错

Perl 尝试在XML::LibXML中规范化XML片段时出错,perl,libxml2,canonicalization,xml-libxml,Perl,Libxml2,Canonicalization,Xml Libxml,我试图规范化XML片段,以避免在结果XML中打印自动关闭节点。(由于消费系统的限制,我希望节点以的形式进行流式传输) 我试图在XML::LibXML::Node中使用toStringC14N()方法来实现同样的效果,但遇到了以下错误,我似乎也没有从google获得任何帮助 use XML::LibXML; my $tagName = 'testtag'; my $tagValue = ''; my $doc = XML::LibXML->createDocument->new(

我试图规范化XML片段,以避免在结果XML中打印自动关闭节点。(由于消费系统的限制,我希望节点
的形式进行流式传输)

我试图在XML::LibXML::Node中使用toStringC14N()方法来实现同样的效果,但遇到了以下错误,我似乎也没有从google获得任何帮助

use XML::LibXML;

my $tagName  = 'testtag';
my $tagValue = '';

my $doc = XML::LibXML->createDocument->new('1.0', 'UTF-8');
my $element = $doc->createElement($tagName);
$element->appendText($tagValue);
print "\nOut=>".$element->toStringC14N();
输出:

Failed to convert doc to string in doc->toStringC14N at /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/XML/LibXML.pm line 1328.
我只能在LibXML.c中查找错误,直到找到以下方法

xmlDocDumpMemory(self、result和len)

我不知道我做错了什么,因为“toString()”似乎工作正常


我使用的是PerlV5.8.8&XML::LibXML版本1.88

XML::LibXML的测试脚本t/24c14n中的所有单元测试。也许createDocument中有一些东西对于ToString 14n来说是不可循环的。您可以尝试询问XML::LibXML邮件列表(见下文)

与此同时,这确实有效:

my $doc = XML::LibXML->createDocument->new('1.0', 'UTF-8');

my $element = $doc->createElement($tagName);
$element->appendText($tagValue);
my $doc2 = XML::LibXML->new->parse_string($element->toString);
print "\nOut=>".$doc2->toStringC14N()."\n";

#prints Out=><testtag></testtag>
my$doc=XML::LibXML->createDocument->new('1.0','UTF-8');
我的$element=$doc->createElement($tagName);
$element->appendText($tagValue);
我的$doc2=XML::LibXML->new->parse_字符串($element->toString);
打印“\nOut=>”$doc2->toStringC14N()。“\n”;
#打印输出=>
对于建议等,以及与XML::LibXML相关的其他问题,您可以 使用perl XML邮件列表(perl-xml@listserv.ActiveState.com), 其中讨论了大多数与XML相关的Perl模块。万一有问题 你应该先检查一下那份清单的档案。许多问题正在解决 已经在那里讨论过了。您可以找到该列表的存档和 订阅选项位于