【问题标题】:How to parse an HTML node's attributes如何解析 HTML 节点的属性
【发布时间】:2011-04-11 14:45:12
【问题描述】:

我使用 C# 并且需要解析 HTML 以将属性读入键值对。 例如,给定以下 HTML sn-p

<DIV myAttribute style="BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent; BORDER-TOP: medium none" id=my_ID anotherAttribNamedDIV class="someclass">

请注意属性可以是
1. key="value" 对,例如class="someclass"
2. key=value 对,例如id=my_ID(值没有引号)
3. 普通属性,例如myAttribute,它没有“值”

我需要将它们存储到具有键值对的字典中,如下所示
key=myAttribute value=""
key=style value="BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent; BORDER-TOP: medium none"
key=id value="my_ID"
key=anotherAttribNamedDIV value=""
key=class value="someclass"

我正在寻找正则表达式来执行此操作。

【问题讨论】:

标签: c# html regex parsing


【解决方案1】:

您可以使用HtmlAgilityPack 来做到这一点

string myDiv = @"<DIV myAttribute style=""BORDER-BOTTOM: medium none; BACKGROUND-COLOR: transparent; BORDER-TOP: medium none"" id=my_ID anotherAttribNamedDIV class=""someclass""></DIV>";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(myDiv);
HtmlNode node = doc.DocumentNode.SelectSingleNode("div");

Literal1.Text = ""; 

foreach (HtmlAttribute attr in node.Attributes)
{
    Literal1.Text += attr.Name + ": " + attr.Value + "<br />";
}

【讨论】:

    【解决方案2】:
    HtmlDocument docHtml = new HtmlWeb().Load(url);
    

    【讨论】:

    • 你能添加一些解释(和代码格式)吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多