Perl 尝试在XML::LibXML中规范化XML片段时出错
我试图规范化XML片段,以避免在结果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::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.88XML::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模块。万一有问题
你应该先检查一下那份清单的档案。许多问题正在解决
已经在那里讨论过了。您可以找到该列表的存档和
订阅选项位于