用纯 JavaScript 编写的用于嵌入式环境的 XML 解析器 [关闭]
Posted
技术标签:
【中文标题】用纯 JavaScript 编写的用于嵌入式环境的 XML 解析器 [关闭]【英文标题】:XML parser written in pure javascript for embedded environments [closed] 【发布时间】:2014-01-08 16:17:57 【问题描述】:我正在寻找一个可以在无法访问document
、DOMParser
或任何其他浏览器扩展的javascript 环境中运行的解析器。 javascript 应用程序可以在 node.js 中的浏览器(IE、Firefox、Chrome、Safari...)中运行,但它注定主要嵌入在 V8 或 SpiderMonkey 环境中运行。该环境的分发不支持通常的 XML 解析器,我无法解析包含来自 javascript 的有效 XML 的字符串。
所有依赖于 DOMParser
和 ActiveXObject
等浏览器扩展的库都会失败,并显示类似 ReferenceError: DOMParser is not defined
的消息。
不需要访问文件系统(我需要从字符串解析为类似 DOM 的结构)。
【问题讨论】:
谷歌搜索javascript parse xml
显示很多无用的结果(使用浏览器功能),但也有一些有用的结果
这里有用的答案:***.com/a/7373003/1388017
另外***.com/a/9056881/187606 也不是完全说它是一个完整的本机实现,但它看起来像一个
xhr 的 responseXML 是一个纯解析的 DOM。顺便说一句,没有浏览器解析器是什么意思?
@cocco 一个不使用浏览器扩展的解析器,如 ActiveXObject 或 DOMParser。简单地说就是提供一个纯 javascript 实现。
【参考方案1】:
marknote 是here 指出的正确解决方案(感谢 Pekka 웃)。该库在从远程位置加载时使用 XMLHttpRequest,但在从字符串解析时,它集成了一个用 javascript 编写的独立 XML 解析器,这使其适用于嵌入式解释器:
var text="<note>";
text=text+"<content>whatever blablabla</content>";
text=text+"</note>";
var parser = new marknote.Parser();
var doc = parser.parse(text);
native.log(doc.toString()); // show the formatted XML
【讨论】:
现在有many纯js解决方案。【参考方案2】:Checkout jQuery.parseXML - 一个基本的 XML 解析器。
【讨论】:
实际上这正是 OP 所排除的:根据 JQuery 源:new DOMParser();
这是一个浏览器扩展。 Jquery 只是隐藏了解析器实现(ActiveXObject 和 DOMParser)。以上是关于用纯 JavaScript 编写的用于嵌入式环境的 XML 解析器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章