Récupération de la valeur span d'un document HTML

.net c# html-agility-pack

Question

J'ai suivi xpath avec le plugin firefox xpath

id('some_id')/x:ul/x:li[4]/x:span

en utilisant le pack d'agilité html, je peux récupérer l' id('some_id')/x:ul/x:li[4]

id('some_id')/x:ul/x:li[4]/x:span

mais je ne sais pas comment obtenir cette valeur span.

mettre à jour

id('some_id')/x:ul/x:li[4]/x:span

Réponse acceptée

Une autre approche (sans html-agility-pack) serait d'utiliser LINQ2XML . Vous pouvez utiliser la méthode XDocument.Descendants pour prendre l'élément span et prendre sa valeur:

var xml = @" <div id=""some_id"">
<ul>
  <li></li>
  <li></li>
  <li></li>
  <li>
     Some text
    <span>text I want to grab</span>
  </li>
</ul>
</div>";
var doc = XDocument.Parse(xml);
Console.WriteLine(doc.Root.Descendants("span").FirstOrDefault().Value);

Le code peut être étendu pour vérifier si l'élément div a l'ID correspondant, à l'aide de la propriété XElement.Attribute :

var xml = @" <div id=""some_id"">
<ul>
  <li></li>
  <li></li>
  <li></li>
  <li>
     Some text
    <span>text I want to grab</span>
  </li>
</ul>
</div>";
var doc = XDocument.Parse(xml);
Console.WriteLine(doc.Root.Descendants("span").FirstOrDefault().Value);

Un inconvénient de cette solution est que la structure XML (HTML, XHTML) doit être correctement fermée sinon l’analyse échouera.


Réponse populaire

Vous n'avez pas besoin d'analyser HTML avec LINQ2XML, HTMLAgilityPack c'est pour cela et il est plus facile d'obtenir le noeud de la manière suivante:

var html = @" <div id=""some_id"">
  <ul>
    <li></li>
    <li></li>
    <li></li>
    <li>
      Some text
      <span>text I want to grab</span>
    </li>
  </ul>
</div>";

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);

var value = doc.DocumentNode.SelectSingleNode("div[@id='some_id']/ul/li/span").InnerText;    
Console.WriteLine(value);



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi