Assembly-Fehler mit HtmlAgilityPack

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

Frage

Ich möchte eine App erstellen, die etwas von einer Webseite aufnimmt und es dem Benutzer anzeigt. Um dies zu tun, habe ich HtmlAgilityPack verwendet. Ich habe den Verweis auf das Projekt (v. 1.4.6.0 von NuGet) hinzugefügt und den Code verwendet, den ein Benutzer vor einigen Jahren in einer anderen Frage gepostet hat.

            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
                    }
                }
            }

Mein Problem ist, dass ich den folgenden Fehler erhalte:

Der Typ 'System.Xml.XPath.IXPathNavigable' ist in einer Assembly definiert, auf die nicht verwiesen wird. Sie müssen der Assembly 'System.Xml.XPath, Version = 2.0.5.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' einen Verweis hinzufügen.

Also habe ich versucht, die Referenz mit der folgenden DLL hinzuzufügen:

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

Aber dieses Mal bekomme ich den folgenden Fehler (ich übersetzte es, weil ich einen italienischen Fehler bekomme, also könnte es nicht die korrekte Übersetzung sein):

Es ist nicht möglich, dem Projekt einen Verweis auf eine Assembly hinzuzufügen, die nicht kompatibel ist oder eine höhere Version aufweist

Was kann ich tun?

Beliebte Antwort

Es scheint, dass HtmlAgilityPack (HAP) für Windows Phone 8.1 Store-Apps XPath nicht unterstützt, ähnlich wie bei HAP für Windows 8 Store-Apps .

In diesem Fall können Sie die LINQ-API von HAP anstelle der XPath-API verwenden, zum Beispiel:

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

Auch wenn Sie tatsächlich Windows Phone Silverlight-Apps-Projekt haben, ist LINQ API immer noch eine mögliche Problemumgehung.



Related

Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow