Я пытаюсь добавить новый узел в существующий документ XML.Как добавить новый узел в NodeList с помощью Perl (XML :: LibXML)
Однако попытка использовать функцию push в XML::LibXML::NodeList не приводит к изменению документа.
Вот пример:
#!/usr/bin/perl
use strict;
use XML::LibXML;
my $parser = XML::LibXML->new();
my $xml_string =
'<example>
<books>
<category id="1">
<book isbn="a" />
<book isbn="b" />
<book isbn="c" />
</category>
<category id="2"/>
<category id="3"/>
</books>
</example>';
my $doc = $parser->parse_string($xml_string);
my $category_nodelist = $doc->findnodes('//category[@id="1"]');
my $book_el = $doc->ownerDocument->createElement('book');
$book_el->setAttribute("isbn", "d");
$category_nodelist->push($book_el);
print $doc->toString(1);
Не ссылайтесь на точный [URL-адрес пользователя/версии] (http://search.cpan.org/~shlomif/XML-LibXML-1.89/lib/XML/LibXML/NodeList.pm). Вместо этого используйте одну из констант [search.cpan.org/perldoc/...](http://search.cpan.org/perldoc/XML::LibXML::NodeList) [metacpan.org/module/... ] (http://metacpan.org/module/XML::LibXML::NodeList) [p3rl.org] (http://p3rl.org/XML::LibXML::NodeList). (Если вам не нужна конкретная версия) –
Спасибо за комментарий! Исправлена. – HerbSpiral