2012-04-16 3 views
0

Я хочу получить div из моего html-документа, который не имеет идентификатора или имени, но имеет уникальный тег стиля.Получение элемента с помощью HtmlAgilityPack

Вот что я пробовал:

 foreach (HtmlNode node in myDocument.DocumentNode.DescendantNodes()) 
     { 
      if (node.OuterHtml.Contains("div")) 
      { 
       HtmlAttribute att = node.Attributes["style"]; 

       if (att != null) 
       { 

        if (att.ToString() == "font-size:16px;padding:4px 8px 0") 
        { 
         targetDiv = node; 
        } 
       } 
      } 
      } 

Сначала я получил все узлы в документе, а затем я попытался отфильтровать только дивы с помощью:

if (node.OuterHtml.Contains("div")) 

Однако, это ISN» t фактически отфильтровывает divs, но выбирает любой тег, который имеет в нем div. Каков правильный способ сделать это?

ответ

2

Try XPath:

var nodes = myDocument.DocumentNode.SelectNodes("//div[@style='font-size:16px;padding:4px 8px 0']") 
+0

Я использовал 'myDocument.DocumentNode.Descendants (" div ")', но это тоже работает. – TheGateKeeper

1

Вместо

if (node.OuterHtml.Contains("div")) 

Попробуйте использовать Name дэ свойство:

if (node.Name == "div") 

Я не знаком с HtmlAgilityPack, однако после небольшого чтения вокруг , вы можете найти this site полезным.

+0

Да, я назвал 'Name' фактически атрибутом name, а не тегом. Я использовал 'myDocument.DocumentNode.Descendants (« div »)' в конце, и он сработал. – TheGateKeeper

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