Perché questo raccoglie tutti i miei elementi <li>
nel mio documento?Agility Pack HTML, SelectNodes da un nodo
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(url);
var travelList = new List<Page>();
var liOfTravels = doc.DocumentNode.SelectSingleNode("//div[@id='myTrips']")
.SelectNodes("//li");
Quello che voglio è quello di ottenere tutti gli elementi della <li>
<div>
con un id
di "myTrips".
Non credo che le query siano le stesse. In realtà quando esegue la prima selezione "// div [@ id = 'myTrips']" il nodo corrente cambia. Ecco perché la seconda selezione dovrebbe essere ".//li" (ovunque dal nodo corrente) e non "// li" (ovunque dalla radice). Agility fa esattamente ciò che ci si aspetta che faccia. – derloopkat
@derloopkat, sono ** uguali (non c'è IMHO qui; se non lo fossero potevi rilasciare il punto nella query della soluzione, ma non puoi, puoi?). Sfortunatamente HTMLAgilityPack effettua ricerche dalla radice, indipendentemente dal nodo in cui ci si trova. La parte IMHO è questa: di solito il punto di concentrarsi su un dato nodo è che si continua la ricerca ** da ** quel nodo, non dalla radice di nuovo. La query della soluzione senza punto aggiunto nella seconda sotto-query non avrebbe alcun senso, quindi chiedete perché supportarli? – greenoldman
Stiamo parlando di cose diverse. Quando ho detto che le domande non erano le stesse, stavo parlando di "// li" e ".//li". Con "quelle domande" rimandi alle domande di seguito. – derloopkat