Ошибка при попытке канонизировать фрагменты XML в XML :: LibXML - PullRequest
0 голосов
/ 15 февраля 2012

Я пытаюсь канонизировать фрагмент XML, чтобы избежать печати самозакрывающихся узлов в результирующем XML.(Я хочу, чтобы узел <test /> передавался как <test></test> из-за ограничений в системе-потребителе).

Я пытался использовать метод toStringC14N () в XML :: LibXML :: Node для достижения того же самогоно я столкнулся со следующей ошибкой, по которой мне, похоже, тоже не удалось получить помощь от 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 ()", кажется, работает нормально.

Iя использую Perl v5.8.8 & XML :: LibXML версия 1.88

1 Ответ

1 голос
/ 16 февраля 2012

Все модульные тесты в тестовом скрипте XML :: LibXML t / 24c14n.t получают $ doc от $ parser-> parse_string и вызывают toStringC14N для этого. Может быть, есть что-то в createDocument, которое не может быть использовано по отношению к toStringC14N. Вы можете попробовать задать вопрос в списке рассылки 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>

За предложениями и т. Д., А также по другим вопросам, связанным с XML :: LibXML, вы можете использовать список рассылки perl XML (perl-xml@listserv.ActiveState.com), где обсуждается большинство связанных с XML модулей Perl. В случае проблем Вы должны сначала проверить архивы этого списка. Многие проблемы уже обсуждалось там. Вы можете найти архивы списка и варианты подписки на http://aspn.activestate.com/ASPN/Mail/Browse/Threaded/perl-xml.

...