如何<html>从字符串中剥离标签?



我有以下来自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));
})()

注意:仅当您知道响应的结构相同时,此解决方案才会适用。但是,内容可能会有所不同,但标记在响应数据之前和之后是相同的。

最新更新