2011-07-07 35 views
4

我只是試圖用XML :: DOM將人員節點從一個XML添加到另一個XML節點,即使我克隆了有問題的樹,我仍然得到一個「 WRONG_DOCUMENT_ERR「,因爲它表示該節點來自另一個文件。當我嘗試將節點追加到新文件時,它正好發生。我做對了嗎?Perl XML :: DOM複製文件之間的節點樹

我甚至發現正確的解決方案是導入節點,但谷歌搜索「導入網站: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"; 
+0

你有一個小例子XML文檔嗎? – Lee

+0

任何事情都可以做。像$ xmlStr =「 Steve他做的東西」; 然後嘗試將其副本添加到另一個略有不同的文件。 –

回答

3

終於找到了。在規範的底部一路:

setOwnerDocument(DOC)

所以我會克隆,將克隆新的所有者,然後追加。