为什么在DOM对象具有.toString()方法时使用dom序列化程序

时间:2014-03-05 19:49:14

标签: javascript node.js dom serialization xmldom

到目前为止,每当我想获得DOM对象所代表的XML文本时,我都使用了.serializeToString()方法。例如:

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

myNode = new dom().parseFromString('<greet>Hello!</greet>', 'text/xml');
console.log(new s().serializeToString(myNode, 'text/xml');

但是,我偶然发现所有节点对象也有一个.toString()方法,显然它返回与序列化器完全相同的东西。

console.log(myNode.toString());

通过序列化程序有什么意义? 这是最佳做法吗? 是否有任何重要的差异(例如,处理特殊字符,如'&lt;')?还有什么我应该知道的吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

简短的回答是,如果您只在Node上使用此代码,则可以node.toString()new XMLSerializer().serializeToString(node)使用。

toString方法不是标准的,在浏览器中不存在。 DOMParser规范仅以几种方式指定解析/序列化,而toString不是其中之一。正如您在XMLDOM中看到的,它只是serializeToString的别名:

https://github.com/jindw/xmldom/blob/master/dom.js#L911

另请注意,serializeToString没有第二个参数,因此您不需要第二个text/xml