2013-08-06 4 views
0

Я пытаюсь разобрать с HTMLAgility следующее:HtmlAgility Xpath Выпуск

<span class="button"> 
<a role="anotherbutton" href="/gofor/15555445554/be?ref=t">Me</a> 
</span> 

с чем-то вроде этого:

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//span[@class = 'button']/a[@role = 'anotherbutton']")) 
     { 
      string att = link.Attributes["href"].Value; 
      txt_htmlResults.Text += att.ToString() + "\n";  
     } 

Однако я всегда получаю пустое исключение ... Мое намерение, чтобы получить 15555445554. Может кто-то помочь. Спасибо заранее

+1

Где в цикле Еогеасп имеет место нулевое исключение? –

+0

Вы отлаживали его? Вы подтвердили, что 'link.Attributes [" href "]' фактически что-то возвращает? – Arran

+0

Проблема в doc.DocumentNode.SelectNodes возвращает null .... Xpath неверен. Если я ставлю, например // a [@href], я получаю все hrefs на странице .. – Jim

ответ

1

бросил его в текстовом файле на моем диске С:

HtmlDocument doc = new HtmlDocument(); 
    doc.Load("C:\\temp\\stackhtml.html"); 
    //string link = doc.DocumentNode.SelectSingleNode("//span[@class='button']//a").OuterHtml; 
    string rawLink = doc.DocumentNode.SelectSingleNode("//span[@class='button']//a").GetAttributeValue("href", "unkown"); 
    Console.WriteLine("rawLink: " + rawLink); 
    string cleanedLink = rawLink.Substring(rawLink.IndexOf("r/")+2,rawLink.IndexOf("/b")-rawLink.IndexOf("r/")-2); 
    Console.WriteLine("cleanedLink: " + cleanedLink); 
    Console.ReadLine(); 

результат:

enter image description here

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