2012-05-08 47 views
5

我一直在使用DOMParser对象将文本字符串解析为XML树。但是它在Web Worker的上下文中不可用(当然,也不是document.ELEMENT_NODE或需要的各种其他常量)。有没有其他方法可以做到这一点?在Web Worker中解析XML

请注意,我不想操纵当前页面的DOM。 XML文件不会包含HTML元素或任何类型的内容。实际上,我根本不想触摸文档对象。我只是想提供一个文本字符串类似如下:

<car color="blue"><driver/></car> 

...,并得到一个合适的树状结构和方法来遍历它。我也不关心模式验证或任何幻想。我知道XML for <SCRIPT>,许多人可能会发现有用(因此我在这里链接到它),但它的许可证不适合我。我不确定jQuery是否包含一个XML解析器(我对这个东西相当陌生),但即使它确实存在(并且它可以在Worker中使用),但我不会再包含额外的〜50K行代码这个功能。

我想我可以在JavaScript中编写一个简单的XML解析器,我只是想知道如果我错过了一个更快的选项。

回答

4

根据spec

的DOM的API(Node对象,文档对象,等)不向工人在这个版本本说明书。

我想这就是为什么DOMParser不可用,但我不明白为什么做出这个决定。 (取,并在WebWorker处理XML文档似乎并不unreasonnable)

,但你可以导入其他工具可供使用:a "Cross Platform XML Parsing in JavaScript"

+2

显然,Firefox等浏览器必须使用XML解析器中的主线程,源代码:http://w3-org.9356 .n7.nabble.com/Limited-DOM-in-Web-Workers-td44284.html –

+0

很伤心,但是xmljs是非常慢(与DOMParser相比) – SalientBrain

2

在这一点上,我想分享我的解析器:https://github.com/tobiasnickel/tXml

其TXML ()方法可以将一个字符串解析为一个对象,并且它只需要0.5kb缩小+ gzipped