繁体   English   中英

C#:通过HTML锚标记进行解析

[英]C#: Parsing through the HTML anchor tag

我在字符串中存储了一个锚标记:

<a class="yes" href="Folder/Default.aspx?use=abc&amp;employee=xxx1&amp;status=yes">XYZ</a>

我需要解析此字符串以找到href属性和显示文本的值。 请指教。

PS尝试将加载字符串转换为XML,但是会引发异常-'='是意外令牌。 预期令牌为“;” 另一种方法是使用子字符串方法,但是我正在寻找其他替代方法。

您可以使用此:

string anchor = @"<a class=""yes"" href=""Folder/Default.aspx?use=abc&amp;employee=xxx1&amp;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&amp;employee=xxx1&amp;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&amp;employee=xxx1&amp;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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM