Knotenauswahl innerhalb von HtmlNodeCollection mit HTML Agility Pack

c# html-agility-pack linq xmlnode xml-parsing

Frage

Ich habe eine HTML-Struktur wie folgt:

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

Ich versuche alle Knoten mit class1 auszuwählen:

HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//*[contains(@class,' class1 ')]");

Und wählen Sie alle Knoten innerhalb des Knotens aus, der class2 enthält:

foreach (HtmlNode node in nodes)
{
   HtmlNodeCollection nodes2 = node.SelectNodes("//*[contains(@class,' class2 ')]");
}

Aber nodes2 erhält class2 von allen Knoten. Was mache ich falsch?

Akzeptierte Antwort

var nodes = doc.DocumentNode.SelectNodes("//div[@class='class1']");

var nodes2 = nodes.Select(c1 => c1.SelectNodes("div[@class='class2']"));

Beliebte Antwort

Alternative XPath arbeitete für mich

var nodes = doc.DocumentNode.SelectNodes("//div[@class='class1']");
var nodes2 = nodes.Select(c1 => c1.SelectNodes(".//div[@class='class2']"));



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum