[英]C#: Parsing through the HTML anchor tag
我在字符串中存储了一个锚标记:
<a class="yes" href="Folder/Default.aspx?use=abc&employee=xxx1&status=yes">XYZ</a>
我需要解析此字符串以找到href属性和显示文本的值。 请指教。
PS尝试将加载字符串转换为XML,但是会引发异常-'='是意外令牌。 预期令牌为“;” 另一种方法是使用子字符串方法,但是我正在寻找其他替代方法。
您可以使用此:
string anchor = @"<a class=""yes"" href=""Folder/Default.aspx?use=abc&employee=xxx1&status=yes"">XYZ</a>";
XmlDocument xml = new XmlDocument();
xml.LoadXml(anchor);
string hrefvalue = xml.FirstChild.Attributes["href"].Value; // variable hrefvalue contains the value of the href attribute.
您可以使用像一个正则表达式做这个 :
string link = "<a class=\"yes\" href=\"Folder/Default.aspx?use=abc&employee=xxx1&status=yes\">XYZ</a>";
var href = Regex.Match(link, "href=\"(?<link>.*)\"").Groups["link"];
var display = Regex.Match(link, ">(?<display>.*)<").Groups["display"];
if (href.Success && display.Success)
{
Console.WriteLine(href.Value);
Console.WriteLine(display.Value);
}
但是,如果您想进行真正的HTML解析,那么最好使用HTMLAgilityPack之类的东西 :
string link = "<a class=\"yes\" href=\"Folder/Default.aspx?use=abc&employee=xxx1&status=yes\">XYZ</a>";
var document = new HtmlDocument();
document.LoadHtml(link);
if (!document.ParseErrors.Any())
{
var linkTarget = document.DocumentNode.FirstChild.Attributes["href"];
var linkInnerText = document.DocumentNode.FirstChild.InnerText;
Console.WriteLine("Link target: {0} Link text: {1}", linkTarget, linkInnerText);
}
您可以使用CsQuery 。
例如:
string html = "<a class=\"yes\" href=\"Folder / Default.aspx ? use = abc & amp;employee = xxx1 & amp;status = yes\">XYZ</a>";
string href = new CsQuery.CQ(html).Attr("href");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.