到目前为止,每当我想获得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;')?还有什么我应该知道的吗?
谢谢!
答案 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
。