1
<root>
<element>abc</element>
<top>
<element>after</element>
<element>before</element>
</top>
<element>456</element>
</root>
Я хочу вставить еще один элемент после элемента и перед элементом. Пробовал несколько вариантов, должен что-то упустить.insert after child libxml perl
#!/usr/bin/perl
use strict;
use warnings;
use XML::LibXML;
my $parser = XML::LibXML->new;
my $doc = $parser->parse_file("mytest.xml");
my $root = $doc->getDocumentElement();
my @node = $doc->find('//top/element[2]');
my $new_element= $doc->createElement("element");
$new_element->appendText('testing');
$node[0]->insertAfter($new_element, undef);
print $root->toString(1);
ответ возвращается = Не удается найти метод объекта "ParentNode" с помощью пакета "XML :: Libxml :: NodeList". Примечание: Я получал это немного по некоторым из моих вариантов. – Paul
@Paul: Таким образом, существует несколько узлов, соответствующих XPath. – choroba
Не то, что я вижу, см. Данные XML и XPATH. Но, похоже, find возвращает нодлист с заданным xpath. Заметьте, это тоже дает мне такую же ошибку my @ref_node = $ doc-> find ('// top/element [2]'); $ ref_node [0] -> parentNode-> insertAfter ($ new_element, $ ref_node [0]); – Paul