Html Agility Pack c # Problema di parsing del paragrafo

c# html html-agility-pack

Domanda

Sto avendo un paio di problemi con il mio codice, sto provando a tirare ogni paragrafo da una pagina, ma al momento si sta selezionando solo l'ultimo paragrafo.

ecco il mio codice

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p"))
{
  string text = node.InnerText;
  lblTest2.Text = text;
}

Risposta accettata

Nel tuo loop stai prendendo il nodo corrente innerText e assegnandolo all'etichetta. Lo fai su ogni nodo, quindi ovviamente vedi solo l'ultimo - non stai preservando i precedenti.

Prova questo:

foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@id='body']/p"))
{
  string text = node.InnerText;
  lblTest2.Text += text + Environment.NewLine;
}

Risposta popolare

IMO, XPath non è divertente. Ti consigliamo di utilizzare la sintassi LINQ invece:

foreach (var node in doc.DocumentNode
    .DescendantNodes()
    .Single(x => x.Id == "body")
    .DescendantNodes()
    .Where(x => x.Name == "p")) 
{
    string text = node.InnerText;
    lblTest2.Text = text;
}


Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché