如何从包含HTML的变量中获取正文内容?

How can I get the body contents out of a variable containing HTML?

本文关键字:正文 获取 变量 包含 HTML      更新时间:2023-09-26

我有一个变量htmlSource包含这样的HTML代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>IIS 8.0 Detailed Error - 404.0 - Not Found</title> 

</head> 
<body>xxx some code here yy</body> 
</html>

我如何创建一个新的变量htmlBodyOnly,它只包含"xxx一些代码这里yy"。如果可能的话,我想用正则表达式来做这件事。我只是不确定如何使用正则表达式或类似的东西排除开始和结束。

对不起,但我没有jQuery来帮助。我只是在一个javascript变量工作。

这很难看,但是你可以用这个方法把它保持为字符串:

htmlsource.substring(htmlsource.indexOf("<body>")+6, htmlsource.indexOf("</body>"))

+6是因为字符串"<body>"有6个字符,indexOf方法返回字符串中要搜索的第一个字符的索引。

下面是给出示例的证明:http://jsfiddle.net/9wBkf/

这里假设body标签没有属性,即<body class="myClass>

可以使用DOMParser来解析html并提取正文的内容。看到这个问题:转换HTML字符串到DOM元素?

var parser = new DOMParser()
var doc = parser.parseFromString(stringToParse, "text/html")
console.log(doc.body.innerHTML)

这是小提琴!

我不知道你可以使用哪个正则表达式,但我想我知道一个替代解决方案。你也可以将你的var '转换'为DOM-object,然后读取body-child。

将HTML字符串转换为DOM元素?