Gau*_*nan 6 javascript jquery dojo parsing html-parsing
我们在一个项目中有一个特殊要求,我们必须通过JavaScript解析一串HTML(来自AJAX响应)客户端.多数民众赞成在PHP或Java中没有解析!我整整一周都在浏览StackOverflow并且还没有得到可接受的解决方案.
有关要求的更多细节:
我们可以使用任何库(最好是dojo和/或jQuery)或者原生!
我们需要解析作为字符串接收的整个HTML文档,包括<head>
和<body>
.
我们还需要有时将解析后的DOM结构序列化为字符串.
最后,我们不希望将解析后的DOM附加到当前Document.相反,我们会将其发送回服务器以进行永久存储.
例如:我们需要类似的东西
var dom = HTMLtoDOM('<html><head><title> This is the old title. </title></head></html>');
dom.getElementsByTagName('title')[0].innerHTML = "This is a new Title";
Run Code Online (Sandbox Code Playgroud)
根据我的研究,这些是我们的选择:
一个TinyMCE解析器.问题?我想我们需要包括一个编辑.如何解析我们不需要编辑器的HTML?
John Resig的Parser.应该是我们最好的选择.不幸的是,当给出页面的全部内容时,解析器会崩溃!
jQuery $(htmlString)或dojo.toDom(htmlString).双方依靠的DocumentFragment,从而吞噬<head>
和<body>
!
编辑:我们想序列化HTML,以便我们可以通过RegExp捕获某些自定义HTML Commnet.我们需要让用户有机会编辑元标记,标题标记等HTML Parser.
哦,我觉得我会在Stack Overflow中被谋杀,即使我只是暗示通过RegExp解析HTML!
Dag*_*bit 10
您可以利用当前文档而不向其添加任何节点.
尝试这样的事情:
function toNode(html) {
var doc = document.createElement('html');
doc.innerHTML = html;
return doc;
}
var node = toNode('<html><head><title> This is the old title. </title></head></html>');
console.log(node);?
Run Code Online (Sandbox Code Playgroud)