使用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合法吗? 是的,了解原因