例如,如果我有这个标记:
<p>
<br />
TEXT TEXT TEXT KEYWORD
<span>TEXT TEXT TEXT</span>
</p>
如何用一些锚元素替换 KEYWORD 文本,使其变为:
<p>
<br />
TEXT TEXT TEXT <a href="www.url.com">KEYWORD</a>
<span>TEXT TEXT TEXT</span>
</p>
我尝试使用 HtmlNodeNavigator Value 属性,它似乎只有当前导航元素及其兄弟和子元素的文本字符(不是所有包含子元素的 InnerText)。
但是当我尝试使用 SetValue(因为 Value 只是一个 getter)时,它会抛出一个错误,提示“不支持指定的方法。”。
我真的不知道为什么会这样。
我没有找到任何其他方法来更改文本。
这是我正在运行的代码,用于在 HTML 标记中查找关键字文本并将其设置为链接。
我知道它还没有完成,但我坚持替换和获取新文本而不是旧文本的部分。注意它是一个递归方法。
private static void FindKeyword(string keyword, string url, HtmlAgilityPack.HtmlNodeNavigator nav)
{
while (!nav.IsEmptyElement && nav.InnerXml.Contains(keyword))
{
if (nav.Value.Contains(keyword) && nav.Name != "a")
{
string newStr = nav.Value.Replace(keyword, "<a href=\"" + url + "\">" + keyword + "</a>");
nav.SetValue(newStr);//exception "Specified method is not supported"
}
if (nav.HasChildren)
{
nav.MoveToFirstChild();
FindKeyword(keyword, url, nav);
}
nav.MoveToNext();
}
}
有人可以帮我解决这个问题吗?
谢谢