我正在使用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
是#document并且我将其附加到parent
,为什么父母没有#document孩子?
谢谢!
答案 0 :(得分:1)
parseFromString
返回Document
个实例,而不是Element
个实例。您的appendChild
调用可能会抛出异常,因为Document
不允许Element
作为var doc = new dom().parseFromString('<div id="foo">Text</div>');
var childToBe = doc.documentElement;
的子节点,但节点解析器实现可能不会检查。
您可能想要的是获取文档的根元素:
{{1}}