HTML Agility Pack 未更改文本节点的文本
HTML Agility Pack not changing text of text node
我想在 HTML
文档中(但只是在文本节点中)用 ++
替换 ##
。
我正在使用 HTML Agility Pack
来处理文档。这是我的代码:
private static void Main(string[] args)
{
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml("<html><p>This is a test paragraph ##</p><a>Not here ##</a><div><p>Nested paragraph ##</p></div></html>");
Console.WriteLine(htmlDoc.Text);
GenerateLinksInHtmlNode(htmlDoc.DocumentNode.ChildNodes);
Console.WriteLine(htmlDoc.Text);
Console.ReadKey();
}
private static void GenerateLinksInHtmlNode(HtmlNodeCollection htmlNodeColl)
{
foreach (var childNode in htmlNodeColl)
{
switch (childNode.NodeType)
{
case HtmlNodeType.Document:
case HtmlNodeType.Element:
GenerateLinksInHtmlNode(childNode.ChildNodes);
break;
case HtmlNodeType.Text when childNode.ParentNode.Name == "a":
continue;
case HtmlNodeType.Text:
{
var txtNode = (HtmlTextNode) childNode;
txtNode.Text = GenerateLinks(txtNode.Text);
break;
}
}
}
}
private static string GenerateLinks(string txt)
{
return Regex.Replace(txt, "##", "++");
}
我调试的时候看到文本节点有替换文本,应该替换的时候。但是在第二个 Console.WriteLine()
中,文本与第一个日志中的相同。
Text
属性 是在加载文档时设置的。之后,它不会改变。参见 source。
使用 InnerHtml
或 OuterHtml
属性 查看更改。
Console.WriteLine(htmlDoc.DocumentNode.InnerHtml);
我想在 HTML
文档中(但只是在文本节点中)用 ++
替换 ##
。
我正在使用 HTML Agility Pack
来处理文档。这是我的代码:
private static void Main(string[] args)
{
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml("<html><p>This is a test paragraph ##</p><a>Not here ##</a><div><p>Nested paragraph ##</p></div></html>");
Console.WriteLine(htmlDoc.Text);
GenerateLinksInHtmlNode(htmlDoc.DocumentNode.ChildNodes);
Console.WriteLine(htmlDoc.Text);
Console.ReadKey();
}
private static void GenerateLinksInHtmlNode(HtmlNodeCollection htmlNodeColl)
{
foreach (var childNode in htmlNodeColl)
{
switch (childNode.NodeType)
{
case HtmlNodeType.Document:
case HtmlNodeType.Element:
GenerateLinksInHtmlNode(childNode.ChildNodes);
break;
case HtmlNodeType.Text when childNode.ParentNode.Name == "a":
continue;
case HtmlNodeType.Text:
{
var txtNode = (HtmlTextNode) childNode;
txtNode.Text = GenerateLinks(txtNode.Text);
break;
}
}
}
}
private static string GenerateLinks(string txt)
{
return Regex.Replace(txt, "##", "++");
}
我调试的时候看到文本节点有替换文本,应该替换的时候。但是在第二个 Console.WriteLine()
中,文本与第一个日志中的相同。
Text
属性 是在加载文档时设置的。之后,它不会改变。参见 source。
使用 InnerHtml
或 OuterHtml
属性 查看更改。
Console.WriteLine(htmlDoc.DocumentNode.InnerHtml);