用c#.net解析HTML

用c#.net解析HTML,c#,html,windows-phone-7,C#,Html,Windows Phone 7,我正试图解析下面的HTML文件,我希望得到key的值。这是在Silverlight for Windows phone上完成的 <HTML> <link ref="shortcut icon" href="favicon.ico"> <BODY> <script Language="JavaScript"> location.href="login.html?key=UEFu1EIsgGTgAV7guTRhsgrTQU28TImSZkYhPMLj7

我正试图解析下面的HTML文件,我希望得到key的值。这是在Silverlight for Windows phone上完成的

<HTML>
<link ref="shortcut icon" href="favicon.ico">
<BODY>
<script Language="JavaScript">
location.href="login.html?key=UEFu1EIsgGTgAV7guTRhsgrTQU28TImSZkYhPMLj7BChpBkvlCO11aJU2Alj4jc5"
</script>
<CENTER><a href="login.html?key=UEFu1EIsgGTgAV7guTRhsgrTQU28TImSZkYhPMLj7BChpBkvlCO11aJU2Alj4jc5">Welcome</a></CENTER></BODY></HTML>

location.href=“login.html?key=UEFU1EISGGTGAV7GUTRHSGRTQU28TIMSZKYHPMLJ7BCHPKVLCO11AJU2ALJ4JC5”
你知道从这里到哪里吗


谢谢

请查看HTMLAgilityPack。这是一个相当不错的HTML解析器

这里有一些代码可以帮助您开始(需要进行错误检查)

HtmlDocument document=新的HtmlDocument();
字符串htmlString=“blabla”;
document.LoadHtml(htmlString);
HtmlNodeCollection集合=document.DocumentNode.SelectNodes(“//a”);
foreach(集合中的HtmlNode链接)
{
字符串目标=link.Attributes[“href”].Value;
}

您可以使用正则表达式()来实现它。表达式可以是这样的:
login.html\?key=[^”]*

我不会投反对票,因为我很好,但RegEx不再是一种可靠的方式来实现这一点,而HTMLAgilityPack现在几乎是黄金标准(不幸的是,我是公平的-与nice无关-此信息也将帮助您避免尝试使用RexEx解析HTML)Regex可能会起作用,但我强烈建议将来不要这样做。尽管使用Regex解析HTML通常是不对的,但对于给定的场景(您只需要提取一个小片段),它们可能是一个简单、轻量级和直接的解决方案。这取决于您希望html更改的速度和深度。是的,我同意regex不用于解析html,但对于简单的解决方案,它可以。如果您只需要从文件中获取一个值,并为此向程序中添加程序集(应用程序的大小将更大)我不确定它是否明智。对我来说,至少没有一个trut,一切都取决于上下文。+1我以前使用过这个工具,它很棒。我们使用Agility pack做了很多刮削工作,而且它很震撼。一定要试试这个。我认为你不能在windows phone上使用Agility pack。Agility pack适用于windows phone。开发一个应用程序时现在,它很好用。谢谢你的帮助,我会调查的!我刚刚在Stack Exchange网站上为此添加了一个问题-。这个问题已经被关闭了…所以这个问题可能应该被重新打开。@Andrew另一个问题也不在主题上。由此推断,关闭这个问题是有意义的。@Andrew dup问题不太重要h比这个好,但它已经有一长串的答案,并且有很高的票数。
HtmlDocument document = new HtmlDocument(); 
string htmlString = "<html>blabla</html>";
document.LoadHtml(htmlString);
HtmlNodeCollection collection = document.DocumentNode.SelectNodes("//a");
foreach (HtmlNode link in collection)
{
     string target = link.Attributes["href"].Value;
}