2012-02-27 6 views
0

Я разрабатываю веб-приложение с использованием ASP.Net 4.0. Я пытаюсь прочитать метаданные, а также текст внутри тега. Я могу получить значение метатега, но не текст внутри простого тега. Он возвращает значение, если оно находится внутри метатега, иначе нет. Но я хотел бы получить как метатег, так и тег <title>.Извлечь содержимое внутри тега <title>

+0

Ваш вопрос не ясен, не могли бы вы объяснить на примере? –

+1

Если вы пытаетесь разобрать HTML (я полагаю, это то, что вы делаете), попробуйте [Html Agility Pack] (http://htmlagilitypack.codeplex.com/), это сэкономит вам много работы. –

ответ

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"> 

тогда вы сможете получить доступ к мета-теги с кодом позади, как это:

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 за то, что вы достаточно храбры, чтобы назвать свою переменную вроде этого! ;-) –

+0

:)) ну, английский не мой родной язык, и я этого не понимал, полагаю, что я не могу изменить это сейчас, так как я потеряю свой верхний угол –

+0

Может быть, просто мой грязный ум, lol .. во всяком случае, не беспокойтесь, мой верхний знак будет придерживаться, ваш ответ правильный и хороший. –

Смежные вопросы