Perl XML :: DOM Копирование дерева узлов между файлами - PullRequest
4 голосов
/ 07 июля 2011

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

Я даже обнаружил, что правильное решение - импортировать узел, но поиск в 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";

1 Ответ

3 голосов
/ 08 июля 2011

Наконец-то нашел. Весь путь внизу спецификации:

setOwnerDocument (doc)

Итак, я клонирую, устанавливаю нового владельца клонов, затем добавляю.

...