删除正文标记之外的所有内容

时间:2016-02-08 04:03:09

标签: javascript html

我有一个包含来自外部HTML页面的responseText的变量:

textFromFile = myRequest.responseText;

如何删除正文标记 之外的所有内容? 我可以使用Regex删除字符串中的所有HTML标签( textFromFile ),但在此之前,如果有人可以帮我删除身体标签之外的所有字符,我将不胜感激(换句话说) ,只需将字符串/单词保留在HTML页面的body标签中即可。)

---- 编辑部分 ----

我正在阅读的HTML文件是:

<html>
<head> title </head>
<body>
<p> Hello World! <br/>
<a href = ”link.html”> Click <b> here </b> </a> <br/>
Goodbye world!
</p>
</body>
</html>

申请时:

var doc = new DOMParser().parseFromString(myRequest.responseText, "text/html");
            alert(doc.body.innerHTML);

回复是:

title 

<p> Hello World! <br>
<a href="”link.html”"> Click <b> here </b> </a> <br>
Goodbye world!
</p>

不应该是这种情况,因为'title'在body标签之外。

2 个答案:

答案 0 :(得分:2)

使用DOM解析器解析HTML:

var doc = new DOMParser().parseFromString(myRequest.responseText, "text/html");

然后只需使用innerHTML(或outerHTML):

doc.body.innerHTML;

var string = "<!DOCTYPE html><title>Title</title><p>Hello</p>",
    doc = new DOMParser().parseFromString(string, "text/html");
document.getElementById('inner').textContent = doc.body.innerHTML;
document.getElementById('outer').textContent = doc.body.outerHTML;
pre {
  background: #ddd;
  font-family: monospace;
  padding: .5em;
}
The inner HTML of &lt;body&gt; is:
<pre id="inner"></pre>
The outer HTML of &lt;body&gt; is:
<pre id="outer"></pre>

答案 1 :(得分:1)

为什么不直接使用字符串替换函数和一些RegExp():

试试这个:

var responseText = "<html>\
<head> title </head>\
<body>\
<p> Hello World! <br/>\
<a href = ”link.html”> Click <b> here </b> </a> <br/>\
Goodbye world!\
</p>\
</body>\
</html>";

console.log(responseText.replace(new RegExp(".*(<body>)(.*)(<\/body>).*", 'gm'), "$1$2$3"));

<强>输出:

<body><p> Hello World! <br/><a href = ”link.html”> Click <b> here </b> </a> <br/>Goodbye world!</p></body>

如果您不想包含&lt; body&gt; &lt; / body&gt; 标记

,请从上方删除$ 1和$ 3