Добавление #document-узлов в качестве дочерних

Я использую node и xmldom. В ocasion я разбираю XML из строки с намерением добавить ее как дочерний элемент в другой элемент. Однако меня смущает следующий код:

var dom = require('xmldom').DOMParser;
var s = require('xmldom').DOMSerializer;

var childToBe = new dom().parseFromString('<div id="foo">Text</div>');
var parent = nodeWhereIWantToInsertChild();

parent.appendChild(childToBe);

Это работает отлично, и когда я сериализую его, я получаю то, что я ожидал

<parent><div id="foo">Text</div></parent>

Поэтому, поскольку div - это ребенок parent,

parent.childNodes[0].nodeName == 'div' // is true as expected.

Тогда почему

childToBe.nodeName == '#document' // ->True ????
childToBe.getAttribute('id') // ->Error, no method 'getAttribute'

Если childToBe является # документом, и я добавил его parent, почему родительский родитель не имеет # документа?

Благодарю!!

1 ответ

parseFromString возвращает экземпляр Document, а не экземпляр Element. appendChild ваш вызов appendChild должен вызывать исключение, поскольку Document не разрешен как дочерний Element, но реализация парсера узла, вероятно, не требует проверки.

Вероятно, вы хотите получить корневой элемент документа:

var doc = new dom().parseFromString('<div id="foo">Text</div>');
var childToBe = doc.documentElement;

licensed under cc by-sa 3.0 with attribution.