Warum wählt dies alle meine <li>
Elemente in meinem Dokument?Html Agility Pack, SelectNodes von einem Knoten
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
var travelList = new List<Page>();
var liOfTravels = doc.DocumentNode.SelectSingleNode("//div[@id='myTrips']")
.SelectNodes("//li");
Was ich will, ist, alle <li>
Elemente im <div>
mit einem id
von „myTrips“ zu bekommen.
Ich glaube nicht, dass die Abfragen die gleichen sind. Wenn er das erste Mal auswählt, "// div [@ id = 'myTrips']" ändert sich der aktuelle Knoten. Deshalb sollte die zweite Auswahl "./li" (irgendwo vom aktuellen Knoten) und nicht "// li" (irgendwo von root) sein. Agilität macht genau das, was erwartet wird. – derloopkat
@derloopkat, sie ** sind ** die gleichen (es gibt keine IMHO hier; wenn sie nicht wären, könnten Sie den Punkt in der Lösungsabfrage fallen lassen, aber Sie können nicht, können Sie?). Leider sucht HTMLAgilityPack von der Wurzel aus, egal auf welchem Knoten Sie sich befinden. Der IMHO-Teil ist dies - normalerweise ist der Punkt, an dem man sich auf einen bestimmten Knoten konzentriert, der, dass man die Suche ** von ** diesem Knoten aus fortsetzt und nicht wieder von der Wurzel. Die Lösungsabfrage ohne hinzugefügten Punkt in der zweiten Unterabfrage würde überhaupt keinen Sinn ergeben, also warum sie unterstützen? – greenoldman
Wir sprechen über verschiedene Dinge. Als ich sagte, dass die Fragen nicht die gleichen sind, sprach ich von "// li" und ".//li". Mit "diese Abfragen" verweisen Sie auf die folgenden Abfragen. – derloopkat