Afaik我无法将这样的dll作为HTMLtidy或HTML Agility Pack加载到我的WP7项目中,那么是否有更高效,更可靠的方式来搜索我的HTML字符串而不是使用IndexOf构建Substings?
void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
string document = string.Empty;
using (var reader = new StreamReader(e.Result))
document = reader.ReadToEnd();
string temp = document.Substring(document.IndexOf("Games Played"), (document.IndexOf("League Games") - document.IndexOf("Games Played")));
temp = (temp.Substring(temp.IndexOf("<span>"), (temp.IndexOf("</span>") - temp.IndexOf("<span>")))).Remove(0, 6);
Int32.TryParse(temp, out leaugeGamesPlayed);
}
感谢您的帮助
Gpx
答案 0 :(得分:4)
您可以使用HTML Agility Pack,但需要转换版本的HTML Agility Pack for the Phone。它只能从svn存储库中获得,但效果很好,我在我的应用程序中使用它。
http://htmlagilitypack.codeplex.com/SourceControl/changeset/view/77494#
您可以在名为HAPPhone和HAPPhoneTest的主干下找到两个项目。您可以使用右侧的下载按钮来获取代码。它使用Linq而不是XPath来工作。
答案 1 :(得分:3)
您可以使用LINQ来解析HTML并找到您感兴趣的元素。例如:
XDocument parsed = XDocument.Parse(document);
var spans = parsed.Descendants("span");
Beth Massi有一篇很棒的博文:Querying HTML with LINQ to XML
答案 2 :(得分:3)
假设您这样做是因为您从网站/网页/服务器获取HTML。
请勿在设备上进行转换。
创建一个包装器/代理站点/服务器/页面以进行转换。虽然这有必要创建额外服务的缺点,但它具有以下优点:
如果您在设计/构建时拥有HTML文件,则将其转换为更易于使用的内容,并避免在运行时进行不必要的计算。
答案 3 :(得分:0)
作为一种解决方法,您可以考虑将HTML加载到WebBrowser控件中,然后通过注入的javascript(回调到.NET)查询DOM