2016-02-17 1 views
0

Cela fait partie html que je suis analyseInnerText Parsing html

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

Je veux http://some.link.com/4DFR6DJ43Y/sessionid?ticket=ASDSIDFK32423421 en tant que sortie.

Jusqu'à présent, j'ai essayé

 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); 
      } 
     } 

... mais la sortie est nulle (pas de textes internes sont trouvés).

+0

utilisation link.innerText.Contains –

Répondre

1

C'est probablement parce que le premier lien dans votre document HTML retourné par SelectSingleNode(), ne contient pas de texte "ticket". Vous pouvez vérifier le texte cible dans XPath directement, comme ceci:

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

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

ou en utilisant le style de LINQ si vous aimez:

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

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

solution XPath est exactement ce que je dois. Court et doux. Je vous remercie. – Tagyoureit

0

Vous pouvez utiliser HTML Agility Pack à la place du document HTML, vous pouvez ensuite effectuer une analyse approfondie en HTML. Pour plus d'informations, veuillez consulter les informations suivantes. Voir le lien suivant. How to use HTML Agility pack

+1

HtmlDocument est de Html Agility Pack de – Tyress

1

Vous avez fourni un morceau de code qui ne compilera pas parce que innerText est non défini. Si vous essayez ce code, vous aurez probablement ce que vous avez demandé:

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

Merci c'est une faute de frappe lors de copier/coller. Cela renvoie NULL tho. Je me suis installé sur la solution Xpath affichée ci-dessus. Merci pour votre temps. – Tagyoureit