Obtenez tous les div sous un div avec un ID connu et parcourez-le

c# dom foreach html-agility-pack

Question

Je construis une application qui explore les correspondances OkCupid. Le résultat de leur correspondance contient du HTML qui ressemble à ceci.

<div id="match_results">
    <div>person1</div>
    <div>person2</div>
    <div>person3</div>
</div>

Je veux faire un foreach de div de la personne à l' intérieur du div match_results . Cependant, quelque chose ne va pas avec mon code C #. matchesList ne contient qu'un élément (lui-même? et pas tous les divs qu'il contient ...)

HtmlDocument matchesHtmlDoc = new HtmlDocument();
matchesHtmlDoc.LoadHtml(matches);

string matchResultDivId = "match_results";

// match results
HtmlNodeCollection matchesList = matchesHtmlDoc.DocumentNode.SelectNodes("//div[@id = '" + matchResultDivId + "']");

foreach (HtmlNode match in matchesList)
{
    //test
    Console.WriteLine(match.ToString());
}

Réponse acceptée

Vous avez oublié de sélectionner des divs enfants:

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(matches);

string matchResultDivId = "match_results";
string xpath = String.Format("//div[@id='{0}']/div", matchResultDivId);
var people = doc.DocumentNode.SelectNodes(xpath).Select(p => p.InnerText);

foreach(var person in people)
    Console.WriteLine(person);

Sortie:

person1
person2
person3



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