我们在一个项目中有一个特殊的需求,需要通过JavaScript解析客户端端的HTML字符串(来自AJAX响应)。是的,不能用PHP或Java解析!我已经整整一个星期在StackOverflow上搜寻,但仍未找到可接受的解决方案。
更多要求细节:
更多要求细节:
我们可以使用任何库(最好是dojo和/或jQuery),或者选择原生实现!
我们需要解析作为字符串接收到的整个HTML文档,包括和。
有时,我们还需要将解析后的DOM结构序列化为字符串。
最后,我们不想将解析后的DOM附加到当前文档中。相反,我们将其发送回服务器进行永久存储。
var dom = HTMLtoDOM('<html><head><title> This is the old title. </title></head></html>');
dom.getElementsByTagName('title')[0].innerHTML = "This is a new Title";
根据我的研究,以下是我们的选择:
TinyMCE解析器。问题?我认为我们需要必须包含一个编辑器。那么在我们不需要编辑器的情况下,如何解析HTML呢?
John Resig的解析器。应该是我们最好的选择。不幸的是,当给它整个页面的内容时,解析器会崩溃!
jQuery $(htmlString) 或 dojo.toDom(htmlString)。两者都依赖于DocumentFragment,因此会吞掉
<head>
和<body>
!
编辑:我们想要序列化HTML,以便通过RegExp捕获某些自定义HTML注释。我们需要给用户编辑meta标签、title标签等的机会,因此需要HTML解析器。
哦,我感觉即使我只是暗示通过RegExp解析HTML,我也会被Stack Overflow上的人谋杀!!!
<input>
!不要给用户机会进行XSS或其他危险的操作。他们不需要编辑文档!而且,您绝不能显示来自不受信任来源的HTML。永远不要相信客户端!这是很危险的! - jwueller