1
<root>
<element>abc</element>
<top>
<element>after</element>
<element>before</element>
</top>
<element>456</element>
</root>
我想在元素之後和元素之前插入另一個元素。 嘗試了一些變化,必須缺少一些東西。插入子元素後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);
答案收益=無法通過包 「XML ::的libxml ::節點列表」,找到對象的方法 「parentNode」。 注意:我在某些變體上看到了這一點。 – Paul
@Paul:所以有幾個節點與XPath匹配。 – choroba
不是我看到的,請參閱給定的XML和XPATH。但是看起來無論如何,find都會返回給定xpath的nodelist。請注意,這也給了我同樣的錯誤我的@ ref_node = $ doc-> find('// top/element [2]'); $ ref_node [0] - > parentNode-> insertAfter($ new_element,$ ref_node [0]); – Paul