J'ai la structure HTML comme ça:
<div class="class1">
<div class="class2">
<a href="test" title="professional and enthusiast programmers">Stack Overflow</a>
</div>
<div class="class2">
</div>
<div class="class2">
</div>
<div class="class2">
</div>
</div>
<div class="class1">
<div class="class2">
<a href="test" title="professional and enthusiast programmers">Stack Overflow</a>
</div>
</div>
J'essaie de sélectionner tous les nœuds avec class1:
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//*[contains(@class,' class1 ')]");
Et sélectionnez tous les nœuds à l'intérieur de ce nœud qui contient class2:
foreach (HtmlNode node in nodes)
{
HtmlNodeCollection nodes2 = node.SelectNodes("//*[contains(@class,' class2 ')]");
}
Mais les nœuds2 obtiennent la classe 2 de tous les nœuds. Qu'est-ce que je fais mal?
var nodes = doc.DocumentNode.SelectNodes("//div[@class='class1']");
var nodes2 = nodes.Select(c1 => c1.SelectNodes("div[@class='class2']"));
Alternative XPath a fonctionné pour moi
var nodes = doc.DocumentNode.SelectNodes("//div[@class='class1']");
var nodes2 = nodes.Select(c1 => c1.SelectNodes(".//div[@class='class2']"));