HtmlAgilityPack Ottieni tutti i collegamenti all'interno di un DIV

.net c# html-agility-pack xml xpath

Domanda

Voglio essere in grado di ottenere 2 collegamenti da dentro un div.

Attualmente posso selezionarne uno, ma c'è di più che non sembra funzionare.

HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load(url);

HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");

            if (node != null)
            {
                foreach (HtmlNode type in node.SelectNodes("//a@href"))
                {
                    recipe.type += type.InnerText;
                }
            }
            else
                recipe.type = "Error fetching type.";

Cercando di ottenerlo da questo pezzo di HTML:

HtmlWeb web = new HtmlWeb();
        HtmlDocument doc = web.Load(url);

HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");

            if (node != null)
            {
                foreach (HtmlNode type in node.SelectNodes("//a@href"))
                {
                    recipe.type += type.InnerText;
                }
            }
            else
                recipe.type = "Error fetching type.";

Qualsiasi aiuto è apprezzato, grazie in anticipo.

Risposta accettata

var div = doc.DocumentNode.SelectSingleNode("//div[@class='myclass']");
if(div!=null)
{
     var links = div.Descendants("a")
                    .Select(a => a.InnerText)
                    .ToList();
}

Risposta popolare

Usa questo XPath:

//div[@class = 'myclass']//a

Si prende tutto discendente a elementi div con class = 'myclass' .

E //a@href è XPath non corretto.




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é