既存のXML文書に新しいノードを追加しようとしています。
しかし、プッシュ機能を 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);
回答:
回答№1は4新しいノードをドキュメントに挿入するには、次のようにします。
$category_nodelist->[0]->appendChild($book_el);
回答№2の場合は1
XMLはTREEベースのデータ構造であることに注意してください。 XML::LibXML
XMLデータからツリーデータ構造を構築するためのlibxml2パーサーです。
XML::LibXML::NodeList
あなたの検索基準に合ったノードのリストです。したがって、このリストに新しいノードを追加しても、XMLは変更されません。
新しいノードを追加するには、まずノードリストからノードを見つけ、適切なサブ
appendChild
addChild
addSibling
などなど。これがあなたに役立つことを願っています。
回答№3の場合は0
The Fine Manualをよく読んでみると、 DOMインタフェースプッシュとポップではありません(あなたが見つけたように、リストを変更する以外に何もしません)。