繁体   English   中英

如何使用jQuery解析此HTML?

[英]How to parse this HTML using jQuery?

过去两个小时试图解决这个问题变得疯狂。 我有这个html作为AJAX请求的字符串返回:

<!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" xml:lang="en" lang="en">
<head>
    <title>Preview</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="author" content="Connected Ventures LLC. Copyright 1999-2010." />
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript" src="js/jquery.ui.js"></script>
    <script type="text/javascript" src="js/article.js"></script>
    <link href="/css/global.css" rel="stylesheet" type="text/css" />
    <link href="/css/article.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    html, body { background: #fff; color: #000; }
    </style>
</head>
<body class="the_article">
        <p>s</p></body>
</html>

我需要在正文标签之间获取内容。 我已经尝试过了,这是在通过jQuery解析html的另一个SO问题中建议的:

$(ajax_response).find('body.the_article').html();

没用 即使添加:

dataType: 'html'

作为ajax请求参数。 然后我尝试使用正则表达式解析它:

ajax_response.match(/<body class="the_article">.*?<\/body>/); 

它只是警告null。 知道如何获取身体含量吗?

您的REGEX失败,因为字符串是多行,而. 通配符匹配除空格字符以外的所有字符,因此,例如,开头的body标签和正文的内容之后的换行符会破坏模式。

使用[\\s\\S]代替. (从字面上看,允许使用非空格和空格字符)

/<body class="the_article">[\s\S]*?<\/body>/

[编辑]-响应评论,要捕获正文内容(不包括其标签),请将内容捕获为一个子组:

var body = response.match(/<body class="the_article">([\s\S]*?)(?=<\/body>)/);
console.log(body[1]); //body content, not including tag

还要注意,我们将关闭主体标签指定为先行标签,因为我们根本不需要匹配它,只需将其锚定即可。 (JS不支持回溯功能,缺少像我编写的那样的模拟,因此我们别无选择,只能捕获开头的 body标签)。

您可以让dom为您完成工作。 使用document.write将代码注入到iframe中,然后访问frame.document.body.innerHTML属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM