2016-02-17 1 views
0

Это является частью HTML, что я имею в разбореСинтаксический InnerText из HTML

<li><a href="http://some.link.com/4DFR6DJ43Y/sessionid?ticket=ASDSIDFK32423421" target="_blank">http://some.link.com/4DFR6DJ43Y/sessionid?ticket=ASDSIDFK32423421</a></li> 

Я хочу, чтобы получить http://some.link.com/4DFR6DJ43Y/sessionid?ticket=ASDSIDFK32423421 как выход.

До сих пор я пытался

 HtmlDocument document = new HtmlDocument(); 
     document.LoadHtml(responseFromServer); 


     var link = document.DocumentNode.SelectSingleNode("//a"); 

     if (link != null) 
     { 
      if(link.innerText.Contains("ticket")) 
      { 
       Console.WriteLine(link.InnerText); 
      } 
     } 

... но выход нулевой (нет внутренних текстов не найдены).

+0

link.innerText.Contains использования –

ответ

1

Это, вероятно, потому, что первого звена в вашем HTML-документе, возвращаемый SelectSingleNode(), не содержит текст "ticket". Вы можете проверить целевой текст в XPath непосредственно, например, так:

var link = document.DocumentNode.SelectSingleNode("//a[contains(.,'ticket')]"); 

if (link != null) 
{ 
    Console.WriteLine(link.InnerText); 
} 

или используя стиль LINQ, если вам нравится:

var link = document.DocumentNode 
        .SelectNodes("//a") 
        .OfType<HtmlNode>() 
        .FirstOrDefault(o => o.InnerText.Contains("ticket")); 

if (link != null) 
{ 
    Console.WriteLine(link.InnerText); 
} 
+1

Xpath это именно то, что мне нужно. Короткие и сладкие. Спасибо. – Tagyoureit

0

Вы можете использовать HTML Agility Pack вместо HTML-документа, после чего вы можете выполнить глубокий синтаксический разбор в HTML. для получения дополнительной информации см. следующую информацию. См. Следующую ссылку. How to use HTML Agility pack

+1

HTMLDocument составляет от Html Agility обновления решения – Tyress

1

Вы дали кусок кода, который не будет компилировать, потому что innerText является не определен. Если вы попробуете этот код, вы, вероятно, получите то, что вы просили:

HtmlDocument document = new HtmlDocument(); 
document.LoadHtml(html); 

var link = document.DocumentNode.SelectSingleNode("//a"); 

if (link != null) 
{ 
    if(link.InnerText.Contains("ticket")) 
    { 
     Console.WriteLine(link.InnerText); 
    } 
} 
+0

Спасибо, опечатка при копировании/вклеивании. Это возвращает NULL tho. Я остановился на решении Xpath, опубликованном выше. Спасибо за ваше время. – Tagyoureit