给定一个HTML文档,我想识别文档中的所有数字,并在数字周围添加自定义标记.现在,我使用以下内容:
HtmlNodeCollection bodyNode = htmlDoc.DocumentNode.SelectNodes("//body");
MatchCollection numbersColl = Regex.Matches(htmlNode.InnerText, <some regex>);
Run Code Online (Sandbox Code Playgroud)
一旦我获得了numbersColl,我就可以遍历每个Match并获得索引.但是,我无法更改InnerText,因为它是只读的.我需要的是,如果match.Value = 100并且match.Index = 25,我想用25替换
<span isIdentified='true'> 25 </span>
任何有关这方面的帮助将不胜感激.目前,由于我无法修改内部文本,我必须修改InnerHtml,但某些元素可能在其innerHtml中有25个.不应该触及这一点.但是如何识别该数字是否在html标记内,即<table border ='1'>在标记中有1.
这是我为解决Text节点的InnerText属性的只读属性限制所做的工作,只需选择Text节点的Parent节点,并记下Parent节点的子节点集合中Text节点的索引.然后就做一个ReplaceChild(...).
private void WriteText(HtmlNode node, string text)
{
if (node.ChildNodes.Count > 0)
{
node.ReplaceChild(htmlDocument.CreateTextNode(text), node.ChildNodes.First());
}
else
{
node.AppendChild(htmlDocument.CreateTextNode(text));
}
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,我相信您需要创建一个新的Element节点,将文本包装到HtmlElement中,然后将其用作Text节点的替代.
或者甚至更好,看看你是否可以做类似这里发布的答案: 使用HTML Agility Pack替换HTML div InnerText标签
| 归档时间: |
|
| 查看次数: |
2994 次 |
| 最近记录: |