我知道工作人员不能直接操作文档,但是DOM方法如何?他们去哪了!
例如,如果我提出一个接收HTML片段的请求,如果需要解析它,我应该做什么来从特定的节点检索一些数据?!
绝对不可能在网络工作者上使用虚拟DOM?!
发布于 2015-11-11 13:20:02
浏览器中的支持
DOMParser或document.implementation通常用于在浏览器中将HTML解析为DOM。在员工上下文中两者都不可用。
在Firefox中,这是不可能的,因为有人决定所有线程只有一个DOM解析器实例。参见这个bug:bug.cgi?id=677123
在google chrome中,它也不起作用。
解决办法-外部库
这是正确的,因为浏览器开发人员没有意识到DOM和XML解析将是WebWorkers的主要用途之一,所以我们必须回到外部库。最好的选择似乎是JSDOM,但您需要找出如何对其进行褐化。
下面是我对DOMParser的失败尝试,我把它保存在关于这个主题的未来实验中:https://jsfiddle.net/svaqb2wn/2/
发布于 2015-11-11 01:58:16
起初,您可能认为解析XML的正确方法是XMLHttpRequest,在10种情况中有9种是正确的。但是,在当前的worker规范中,我们无法访问XMLHttpRequest。另一种方法是使用少数几个流行的XML解析库之一:
https://github.com/isaacs/sax-js
http://xmljs.sourceforge.net/index.html或https://www.npmjs.com/package/xmljs
HTML只是XML,所以您可以以这种方式解析数据。使用上面npmjs中的xmljs的示例:
var XmlParser = require("xmljs");
var fs = require("fs");
var p = new XmlParser({ strict: true });
var xml = fs.readFileSync("./SOAP1.xml"); // XML in the examples direct
var xmlNode = p.parseString(xml, function(err, xmlNode) {
if(err) {
console.error(err);
return;
}
var nodes = xmlNode.path(["Envelope", "Body", "GetstockpriceResponse", "Price"], true);
console.log(nodes.map(function(n) { return n.text; }));
});https://stackoverflow.com/questions/33641622
复制相似问题