我有一个存储在字符串中的锚标记:
<a class="yes" href="Folder/Default.aspx?use=abc&employee=xxx1&status=yes">XYZ</a>
我需要解析此字符串以查找href属性和显示文本的值。请指教。
P.S。尝试将加载字符串转换为XML,但它会引发异常 - “=”是一个意外的标记。预期的标记是';' 另一种方法是使用substring方法,但我正在寻找其他替代方法。
答案 0 :(得分:1)
您可以使用:
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.
答案 1 :(得分:1)
您可以使用this等正则表达式来执行此操作:
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);
}
答案 2 :(得分:-2)
您可以使用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");