獲取具有已知ID的div下的所有div並迭代它

c# dom foreach html-agility-pack

我正在構建一個抓取OkCupid匹配的應用程序。他們的匹配結果包含看起來像這樣的Html。

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

我想在div match_results裡面做一個foreach人的div。但是,我的C#代碼不太對勁。 matchesList只包含一個元素(本身?而不是其中的所有div ...)

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

一般承認的答案

你忘了選擇兒童div:

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


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因