2009-03-03 1 views
0

В настоящее время у меня есть программа, которая находит и редактирует HTML-файлы на основе поиска тега с соответствующим идентификатором.Поиск узла соответствия Raw Html в HtmlAgility HtmlDocument

Я хотел бы расширить его, чтобы найти тег, который соответствующий InnerHtml (без учета капитализации и пропуски)

Что такое хороший способ использовать Html Agility, чтобы сделать это? Я хотел бы сделать это, используя Html Agility, потому что остальная часть программы использует его.

Спасибо.

+0

Эй, я заметил, что есть тег HtmlAgilityPack ... по какой-то причине я не могу пометить это (возможно, отсутствие rep), но может быть полезно другим, если этот вопрос был помечен им. - Привет, Скотт. –

ответ

1

Грубые съемки его здесь, но вы должны быть в состоянии сделать что-то вроде этого:

  HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("YOUR_TAG_SELECTOR"); 

      if (nodes != null) 
      { 
       foreach (HtmlNode node in nodes) 
       { 
        if (node.InnerHtml.ToLower().Trim() == "YOUR_MATCH") 
        { 
         //success routine 
         break; 
        } 
       } 
      } 
+0

Я думаю, что это должно быть node.InnerHtml, а не node.InnerText :) –

+0

Ahh да мои извинения Я прочитал соответствующий текст в исходном вопросе. Исправленный. – Pat

1

Мы сделали это с помощью регулярных выражений. Что-то вроде это работает для нас:

private static List<HtmlNode> GetMatchingNodes(string xPath, string pattern, HtmlDocument htmlDocument) 
{ 
    List<HtmlNode> matchingNodes = new List<HtmlNode>(); 
    foreach (HtmlNode node in htmlDocument.DocumentNode.SelectNodes(xPath)) 
    { 
     if (Regex.IsMatch(node.InnerHtml, pattern)) 
     { 
      matchingNodes.Add(node); 
     } 
    } 
    return matchingNodes; 
} 

Надеется, что это помогает. :)

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