Errore di assembly con HtmlAgilityPack

c# html-agility-pack reference windows-phone-8.1 xpath

Domanda

Voglio creare un'app che prende qualcosa da una pagina web e che lo mostra all'utente. Per fare questo, ho usato HtmlAgilityPack. Ho aggiunto il riferimento al progetto (v 1.4.6.0 da NuGet) e ho usato il codice che un utente ha postato in un'altra domanda alcuni anni fa.

            HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
            // There are various options, set as needed
            htmlDoc.OptionFixNestedTags = true;

            // filePath is a path to a file containing the html
            htmlDoc.Load(filePath);
            if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
            {
                // Handle any parse errors as required
            }
            else
            {
                if (htmlDoc.DocumentNode != null)
                {
                    HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

                    if (bodyNode != null)
                    {
                        // Do something with bodyNode
                    }
                }
            }

Il mio problema è che ottengo il seguente errore:

Il tipo 'System.Xml.XPath.IXPathNavigable' è definito in un assembly a cui non viene fatto riferimento. È necessario aggiungere un riferimento all'assembly 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'.

Così ho provato ad aggiungere il riferimento usando la seguente dll:

c: \ Programmi (x86) \ Microsoft SDK \ Silverlight \ v5.0 \ Libraries \ Client \ System.Xml.XPath.dll

Ma questa volta ottengo il seguente errore (l'ho tradotto perché ottengo un errore italiano, quindi potrebbe non essere la traduzione corretta):

Non è possibile aggiungere un riferimento a un assieme al progetto che non è compatibile o di una versione precedente

Cosa posso fare?

Risposta popolare

Sembra che HtmlAgilityPack (HAP) per le app store Windows phone 8.1 non supporti XPath, simile a HAP per le app store di Windows 8 .

In questo caso, puoi utilizzare l'API LINQ di HAP anziché l'API XPath, ad esempio:

......
if (htmlDoc.DocumentNode != null)
{
    HtmlAgilityPack.HtmlNode bodyNode = doc.DocumentNode
                                           .DescendantsAndSelf("body")
                                           .FirstOrDefault();
    if (bodyNode != null)
    {
        // Do something with bodyNode
    }
}
......

Anche se in realtà hai un progetto per app Silverlight per Windows Phone, LINQ API è ancora una soluzione possibile.



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow