2011-07-07 1 views
4

Я просто пытаюсь добавить узлы людей из одного XML в другой с помощью XML :: DOM, и хотя я клонирую рассматриваемое дерево, я все еще получаю " WRONG_DOCUMENT_ERR ", потому что он говорит, что узел пришел из другого файла. Это происходит правильно, когда я пытаюсь добавить узел в новый файл. Правильно ли я это делаю?Perl XML :: DOM Копировать дерево узлов между файлами

Я даже нашел, что правильное решение заключается в том, чтобы импортировать узел, но поиск в Google «import site: 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 (док)

Так что я клонировать, набор клонов новый владелец, то приобщать.