我有以下来自HTTP get的响应。
<HTML><BODY>Now='11/7/2017 4:08:34 PM' Process='chrome' SessionID=1 User='LocalUser' Culture='en-US'<BR></BODY></HTML>
我需要将正文中的数据放入 JSON 对象中。所以我试图删除 HTML 标签。虽然它不同,但我已经尝试过,就像在这个解决方案中一样。它适用于 HTML 标记,但不适用于<html>
本身。
我也尝试了如下:
var content = "<HTML><BODY>Now='11/7/2017 4:08:34 PM' Process='chrome' SessionID=1 User='LocalUser' Culture='en-US'<BR></BODY></HTML>";
var tag = document.createElement("html");
tag.outerHtml = content;
它给出以下错误:
Uncaught DOMException: Failed to set the 'outerHTML' property on 'Element': This element has no parent node.
虽然我知道可以用regex
来实现,但我想在没有regex
的情况下做到这一点。
有人可以解决吗?
使用 DOMParser()
将 HTML 字符串转换为 DOM:
var html = `<HTML><BODY>Now='11/7/2017 4:08:34 PM' Process='chrome' SessionID=1 User='LocalUser' Culture='en-US'<BR></BODY></HTML>`;
var parser = new DOMParser();
var html_dom = parser.parseFromString(html, "text/html");
var body = html_dom.querySelector("body");
var content = body.innerHTML;
console.log(content);
刚刚创建了一个简单的codepen
。请尝试,它将起作用:
https://codepen.io/vishalkaului/pen/rYMGoy
+6
和 - 16 将排除起始 <BODY>
标记之前和结束</BODY>
标记之后的内容。它包括<BODY></BODY>
标记的排除项。
(function () {
let serverResponse = "<HTML><BODY>Now='11/7/2017 4:08:34 PM'
Process='chrome' SessionID=1 User='LocalUser' Culture='en-
US'<BR></BODY></HTML>";
console.log(serverResponse.substr(serverResponse.indexOf('<BODY>')+6,serverResponse.indexOf('</BODY>')-16));
})()
注意:仅当您知道响应的结构相同时,此解决方案才会适用。但是,内容可能会有所不同,但标记在响应数据之前和之后是相同的。