4

XML :: DOMを使用してあるXMLから別のXMLにピープルノードを追加しようとしています。問題のツリーのクローンを作成していますが、ノードが別のファイルからのものであると表示されているため、「WRONG_DOCUMENT_ERR」が表示されます。これは、ノードを新しいファイルに追加しようとしたときに発生します。私はそれを正しくやっていますか?

正しい解決策はノードをインポートすることであることがわかりましたが、「importsite:http://search.cpan.org/~tjmather/XML-DOM-1.44/」をグーグル検索しても何も得られません。今、私はこれがどのように可能であるかを真剣に考えています。

my $yelParser = new XML::DOM::Parser;
my $yelDoc = $yelParser->parsefile ($yelFile);

my $bwParser = new XML::DOM::Parser;
my $bwDoc = $bwParser->parsefile ($bwFile);

my @personTags = $bwDoc->getElementsByTagName("person");

foreach my $personTag (@personTags){
    my $nameTag = $personTag->getElementsByTagName("name")->[0]->getFirstChild;
    my $name = $nameTag->getNodeValue();
    print "Name: $name\n";

    print "Making clone.\n";
    my $clone = $personTag->cloneNode(1);
    print "Removing Bio.\n";
    $clone->getElementsByTagName("biography")->[0]->getFirstChild->setNodeValue('');
    print "Appending to Yellow\n";
    $yelDoc->getElementsByTagName("xml")->[0]->appendChild($clone);
    print "Node done.\n";
}

<STDIN>;

my $outFile = "$folderOut/$filebase";

print "Printing to file... $outFile\n";

$yelDoc->printToFile($outFile);
print "Output done.\n";
4

1 に答える 1

3

ついにそれを見つけました。仕様の最後まで:

setOwnerDocument(doc)

そこで、クローンを作成し、クローンを新しい所有者に設定してから、追加します。

于 2011-07-08T02:43:33.397 に答える