替换Html Agility中的标签

时间:2011-05-09 11:16:26

标签: html-agility-pack

我正在尝试用h1标记替换所有h2标记,而我正在使用HtmlAgility包。

我这样做了:

var headers = doc.DocumentNode.SelectNodes("//h1");
if (headers != null)
{
    foreach (HtmlNode item in headers)
    {
        //item.Replace??
    }
}

我被困在那里。我试过这个:

var headers = doc.DocumentNode.SelectNodes("//h1");
if (headers != null)
{
    foreach (HtmlNode item in headers)
    {
        HtmlNode newNode = new HtmlNode(HtmlNodeType.Element, doc, item.StreamPosition);
        newNode.InnerHtml = item.InnerHtml;
        // newNode suppose to set to h2
        item.ParentNode.ReplaceChild(newNode, item);
    }
}

问题是我不知道如何创建新的h2,获取所有属性等。 我确定这是一个简单的方法吗,任何想法?

2 个答案:

答案 0 :(得分:12)

var headers = doc.DocumentNode.SelectNodes("//h1");
        if (headers != null)
        {
            foreach (HtmlNode item in headers)
            {
                item.Name = "h2"
            }
        }

答案 1 :(得分:1)

使用Descendants而不是SelectNodes替换标记的类似方法:

IEnumerable<HtmlNode> tagDescendants = doc.DocumentNode.Descendants("h1");
foreach (HtmlNode htmlNode in tagDescendants)
{
    htmlNode.Name = "h2";
}