添加#document节点作为子节点

时间:2014-04-12 15:56:05

标签: node.js parent-child xmldom

我正在使用nodexmldom。在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>

因此,divparent的孩子,

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

那为什么

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

如果childToBe是#document并且我将其附加到parent,为什么父母没有#document孩子?

谢谢!

1 个答案:

答案 0 :(得分:1)

parseFromString返回Document个实例,而不是Element个实例。您的appendChild调用可能会抛出异常,因为Document不允许Element作为var doc = new dom().parseFromString('<div id="foo">Text</div>'); var childToBe = doc.documentElement; 的子节点,但节点解析器实现可能不会检查。

您可能想要的是获取文档的根元素:

{{1}}