2012-02-27 45 views
0

我正在开发一个使用ASP.Net 4.0的Web应用程序。我正在尝试读取元数据以及标签内的文本。 我能够获取元标记值,但不能获取简单标记中的文本。如果它位于元标记内,则返回值,否则返回值。但是我想获取meta标签和<title>标签。在<title>标签内提取内容

+0

你的问题是不明确的,你可以用一个例子解释一下吗? – 2012-02-27 08:16:35

+1

如果您试图解析HTML(我想这就是您要做的),请尝试[Html Agility Pack](http://htmlagilitypack.codeplex.com/),它可以为您节省大量工作。 – 2012-02-27 08:36:16

回答

0

你可以使用这种方法来实现你想要的。

您必须添加using System.Text.RegularExpressions;到命名空间

protected string GetTagText(string source, string tag) 
{ 
    var regexStr = string.Format("(?<=<{0}>).*(?=</{0}>)", tag); 
    Regex regex = new Regex(regexStr, RegexOptions.IgnoreCase); 
    if (regex.IsMatch(source)) 
    { 
     return regex.Match(source).Value; 
    } 

    return null; 
} 

使用像

GetTagText("<title>test title</title>", "title"); 

回报test title

1

要确保你已经RUNAT = “服务器” 在你头上的标签,像这样:

<head runat="server"> 

,那么你就可以用代码来访问meta标签背后是这样的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    foreach (Control cnt in Page.Header.Controls) 
    { 
    if (cnt is HtmlMeta) 
    { 
     HtmlMeta meta = cnt as HtmlMeta; 
     Response.Write("Meta tag name: " + meta.Name + ", content: " + meta.Content + ", http-equiv:" + meta.HttpEquiv + "<br />");   
    } 

    if (cnt is HtmlTitle) 
    { 
     HtmlTitle tit = cnt as HtmlTitle; 
     Response.Write("Title : " + tit.Text + "<br />"); 
    } 
    } 
} 
+1

+1因为勇敢地为你的变量命名! ;-) – 2012-02-27 08:47:13

+0

:))好吧,英语不是我的母语,我没有意识到,因为我现在不能改变它,因为我会失去我的赞同 – 2012-02-27 09:09:26

+0

也许只是我的脏兮兮的心,大声笑..无论如何不要担心我的赞成会坚持,你的答案是正确的,好的。 – 2012-02-27 09:19:13