我正在尝试用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,获取所有属性等。 我确定这是一个简单的方法吗,任何想法?
答案 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";
}