用纯 JavaScript 编写的用于嵌入式环境的 XML 解析器 [关闭]

Posted

技术标签:

【中文标题】用纯 JavaScript 编写的用于嵌入式环境的 XML 解析器 [关闭]【英文标题】:XML parser written in pure javascript for embedded environments [closed] 【发布时间】:2014-01-08 16:17:57 【问题描述】:

我正在寻找一个可以在无法访问documentDOMParser 或任何其他浏览器扩展的javascript 环境中运行的解析器。 javascript 应用程序可以在 node.js 中的浏览器(IE、Firefox、Chrome、Safari...)中运行,但它注定主要嵌入在 V8 或 SpiderMonkey 环境中运行。该环境的分发不支持通常的 XML 解析器,我无法解析包含来自 javascript 的有效 XML 的字符串。

所有依赖于 DOMParserActiveXObject 等浏览器扩展的库都会失败,并显示类似 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 解析器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式开发/调试辅助工具

如何为现有的 Javascript 库创建 Angular 库包装器?

用纯 C 实现的 MVC

JavaScript引擎虚拟机运行时环境浅析

用纯 Ruby 编写 Rails 模板

用纯 JavaScript 解析 JSON [重复]