Seleziona html specifico con "Pacchetto Agilità Html"

c# html-agility-pack

Domanda

Sto usando html-agility-pack e sto provando a selezionare un html specifico. La parte che voglio ottenere è ogni numero GTIN in questi blocchi:

<td><span class="mobile-only">GTIN:</span>07330155011068</td>

-La parte che voglio è i numeri dopo il tag span finale. Es: 07330155011068. Di seguito è riportato il mio html e il mio metodo c #:

<td><span class="mobile-only">GTIN:</span>07330155011068</td>

E sto usando questo metodo per cercare di ottenere i miei valori. Il problema è che non so quale codice scrivere nel SelectNode () per ottenere l'innerHtml contenente i numeri GTIN.

<td><span class="mobile-only">GTIN:</span>07330155011068</td>

Risposta accettata

Usa Xpath per selezionare quarte celle dal corpo della tabella con id tableSearchArticle . Quindi ottieni il testo interno delle celle (sarà senza tag html, come GTIN:07330155114059 ) e rimuoverà il prefisso GTIN:

var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td[4]";
var gtins = doc.DocumentNode.SelectNodes(xpath)
               .Select(td => td.InnerText.Replace("GTIN:", ""));

Produzione:

var xpath = "//table[@id='tableSearchArticle']/tbody/tr/td[4]";
var gtins = doc.DocumentNode.SelectNodes(xpath)
               .Select(td => td.InnerText.Replace("GTIN:", ""));

Risposta popolare

SelectNodes riceve un'espressione Xpath. Quindi, potresti iniziare con questo (non verificato):

foreach (HtmlNode tr in doc.DocumentNode.SelectNodes(
   "//div[@class='table-wrapper']/table[@id='tableSearchArticle']/tbody/tr"))
{
    Console.WriteLine(tr.InnerHtml);
    Console.WriteLine(tr.SelectSingleNode(".//a").GetAttribute("href"));
    Console.WriteLine(tr.SelectSingleNode(".//td[last()]").InnerText);
}



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é