使用HtmlAgilityPack彙編錯誤

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

我想創建一個應用程序,它從網頁中獲取某些內容並將其顯示給用戶。為了做這件事,我使用了HtmlAgilityPack。我添加了對項目的引用(來自NuGet的v.1.4.6.0),並且我使用了幾年前用戶在另一個問題中發布的代碼。

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

我的問題是我收到以下錯誤:

“System.Xml.XPath.IXPathNavigable”類型在未引用的程序集中定義。您必須添加對程序集'System.Xml.XPath,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的引用。

所以我嘗試使用以下dll添加引用:

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

但這次我得到以下錯誤(我翻譯它因為我得到意大利語錯誤,所以它可能不是正確的翻譯):

無法將程序集的引用添加到不兼容或上述版本的項目中

我能做什麼?

熱門答案

似乎用於Windows Phone 8.1商店應用程序的HtmlAgilityPack(HAP)不支持XPath,類似於Windows 8商店應用程序的HAP

在這種情況下,您可以使用HAP的LINQ API而不是XPath API,例如:

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

即使您實際擁有Windows Phone Silverlight應用程序項目,LINQ API仍然是一種可能的解決方法。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因