我有一个包含来自外部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标签之外。
答案 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 <body> is:
<pre id="inner"></pre>
The outer HTML of <body> 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