2011-07-07 38 views
4

XML :: DOMを使用してあるXMLから別のXMLへの人口ノードを追加しようとしています。問題のツリーを複製していても、ノードが別のファイルから来たと言うので、「WRONG_DOCUMENT_ERR」と表示されます。新しいファイルにノードを追加しようとすると、正しく実行されます。私はそれを正しくしていますか?Perl XML :: DOMファイル間のノードツリー

正しい解決策はノードをインポートすることだが、 "import site:http://search.cpan.org/~tjmather/XML-DOM-1.44/"のGoogle検索では何も得られない。今私は真剣にこれがいかに可能か疑問に思います。

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 = "スティーブ彼がしたもの"; そして、そのコピーを少し違う別のファイルに追加しようとします。 –

答えて

3

最後に見つけました。スペックの一番下にあるすべての方法:

setOwnerDocument(DOC)

は、だから私はクローンは、新しい所有者は、その後、追加のクローンを設定します。