Obtener todos los divs bajo un div con ID conocido y iterar sobre él

c# dom foreach html-agility-pack

Pregunta

Estoy creando una aplicación que rastrea OkCupid coincide. Su resultado de coincidencia contiene HTML que se ve así.

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

Quiero hacer el div de una persona foreach dentro del div match_results . Sin embargo, algo no está bien con mi código C #. matchesList solo contiene un elemento (¿en sí? y no todos los divs dentro de él ...)

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

Respuesta aceptada

Se te olvidó seleccionar divs de niños:

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

Salida:

person1
person2
person3


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué