使用HtmlAgilityPack從WP7上的HTML獲取文本

c# html-agility-pack windows-phone-7

我正在嘗試使用HtmlAgilityPack從HTML中提取文本。我成功地將HtmlAgilityPack添加到了我的項目中。但是,我嘗試使用以下代碼來提取正文:

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);

// Use:  htmlDoc.LoadXML(xmlString);  to load from a string

// ParseErrors is an ArrayList containing any errors from the Load statement
if (htmlDoc.ParseErrors!=null && htmlDoc.ParseErrors.Count>0)
{
    // Handle any parse errors as required
}
else
{
    if (htmlDoc.DocumentNode != null)
    {
        HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//body");

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

並且在構建項目時收到以下錯誤。

錯誤1類型'System.Xml.XPath.IXPathNavigable'在未引用的程序集中定義。您必須添加對程序集'System.Xml.XPath,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的引用。 D:\ test \ test \ MainPage.xaml.cs 58

我應該補充一點,我添加了System.Xml引用,但仍然出現此錯誤。你能幫我解決一下這個問題嗎?謝謝。

一般承認的答案

謝謝。我發現我必須從Microsoft SDK父文件夾中提供的Silverlight 4.0文件夾中添加對System.Xml.XPath的引用。


熱門答案

通過手機上的HAP,您將不得不使用Linq2Xml在解析的HTML中查找內容。您可能必須從源(HAPPhone)構建手機版本。

public void Hap()
{
   HtmlWeb.LoadAsync("http://www.page.com", OnCallback);              
}



private void OnCallback(object s, HtmlDocumentLoadCompleted htmlDocumentLoadCompleted)
        {            
            var htmlDocument = htmlDocumentLoadCompleted.Document;

            var test = htmlDocument.DocumentNode.Descendants("select").ToList();


            var test2 = (from h in htmlDocument.DocumentNode.Descendants("select")
                         where h.Attributes["id"].Value == "stateDropdown"
                         select h).FirstOrDefault().ChildNodes.ToList();
        }



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