gpt4 book ai didi

html-agility-pack - 无法使用 Html-Agility-Pack 设置 InnerText

转载 作者:行者123 更新时间:2023-12-01 11:50:42 27 4
gpt4 key购买 nike

给定一个 HTML 文档,我想识别文档中的所有数字并在数字周围添加自定义标签。现在,我使用以下内容:

HtmlNodeCollection bodyNode = htmlDoc.DocumentNode.SelectNodes("//body");
MatchCollection numbersColl = Regex.Matches(htmlNode.InnerText, <some regex>);

获得 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 属性的只读属性限制所做的工作,只需选择 Parent Text 节点的节点,并记下 Text 节点在 Parent 节点的子节点集合中的索引。然后只需执行 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));
}
}

在您的情况下,我认为您需要创建一个新的 Element 节点,将文本包装到 HtmlElement 中,然后将其用作 Text 节点的替换。

或者更好的是,看看您是否可以执行类似于此处发布的答案的操作: Replacing a HTML div InnerText tag using HTML Agility Pack

关于html-agility-pack - 无法使用 Html-Agility-Pack 设置 InnerText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563491/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com