2013-04-14 3 views
0

Я пытаюсь получить данные som из строки html, используя пакет гибкости HTML.Скрестите сайт с помощью пакета hmml agility, найдите класс

Строка Строка [] Я пытаюсь получить данные из деклараций innerhtml, как это:

<td class="street">Riksdagen</td> 
<td class="number">&nbsp;</td> 
<td class="number">&nbsp;</td> 
<td class="postalcode">100 12</td> 
<td class="locality">Stockholm</td> 
<td class="region_code">018001</td> 
<td class="county">Stockholm</td> 
<td class="namnkommun">Stockholm</td> 

Как я могу назначить каждый класс на правой addressDataModel Собственость?

var row = doc.DocumentNode.SelectNodes("//*[@id='thetable']/tr"); 

    foreach (var rowItem in row) 
    { 
     var addressDataModel = new AddressDataModel 
     { 
      street = rowItem.FirstChild.InnerText, 
      zipCodeFrom = // Next item, 
      zipCodeTo = // Next item, 
      zipCode = // Next item, 
      locality = // Next item, 
      regionCode = // Next item, 
      state = // Next item, 
      county = // Next item 
     }; 
    } 

ответ

0

Вы можете написать что-то вроде этого (убедитесь, что узел существует перед использованием InnerText проп):

var addressDataModel = new AddressDataModel 
    { 
     street = rowItem.SelectSingleNode("./td[@class='street']").InnerText, 
     zipCodeFrom = // Next item, 
     zipCodeTo = // Next item, 
     zipCode = // Next item, 
     locality = // Next item, 
     regionCode = // Next item, 
     state = // Next item, 
     county = rowItem.SelectSingleNode("./td[@class='county']").InnerText 
    }; 

Ссылка: http://www.w3schools.com/xpath/xpath_syntax.asp

+0

хорошо XPATH не будет работать, если сайт имеет недействительный синтаксис или макет. RegEx - еще один вариант –

0

Вы также можете обратиться к этому, если вы этого не сделаете хочу использовать Xpath:

HtmlAgilityPack.HtmlDocument htmlContent = new HtmlAgilityPack.HtmlDocument(); 

     htmlContent.LoadHtml(htmlCode); 

     if (htmlContent.DocumentNode != null) 
     { 
      foreach (HtmlNode n in htmlContent.DocumentNode.Descendants("div")) 
      { 
       if (n.HasAttributes && n.Attributes["class"] != null) 
       { 
        if (n.Attributes["class"].Value == "className") 
        { 
         // Do something 
        } 
       }     
      } 
     } 

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

  • Нет связанных вопросов^_^