Получить все div под div с известным идентификатором и перебрать его

1

Я создаю приложение, которое сканирует совпадения OkCupid. Их результат совпадения содержит Html, который выглядит следующим образом.

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

Я хочу сделать foreach person div внутри div match_results. Однако с моим кодом на С# что-то не совсем верно. matchesList содержит только один элемент (сам? и не все divs внутри него...)

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());
}
Теги:
foreach
dom
html-agility-pack

1 ответ

2
Лучший ответ

Вы забыли выбрать дочерние divs:

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

Вывод:

person1
person2
person3

Ещё вопросы

Сообщество Overcoder
Наверх
Меню