我正在使用 htmlagility 包来解析 html 字符串,并将某些模式转换为链接。
给定一个 html 字符串和一个模式“mystring”。我必须将 hrml 字符串中出现的这种模式替换为<a href="/mystring.html>mystring</a>
. 但是有两个例外
1. 如果模式已经在锚标记内,我不应该替换它,这意味着它的直接父级或任何级别的父级都不应该是锚标记。例如:<a href="google.com><span>mystring</span><\a>
2.它不应该在href中。例如<a href="mystring">
。
- 输入字符串:
"<li><span>mystring test</span></li><li><a href='#'><span>mystring</span></li</li>"
- 预期输出:
"<li><span><a href="/mystring.html>mystring</a> test</span></li><li><a href='#'><span>mystring</span></li</li>"
我正在使用 htmlagilitypack 并将此字符串加载为 html doc 并获取所有文本并查看其任何级别的父级是否不是锚并替换它。一切工作简单而美好。但是这里有一个问题。
如果我的输入字符串类似于"li><span>mystring test < 10 and 5</span></li>"
有问题。Htmlagility 解析器将小于符号视为 html 特殊字符,并将“< 10 和 5”视为 html 标记并产生类似的内容。
< 10="" and="" 5="">(具有空值的属性)。
是否可以使用 htmlagilityparser 解决此问题?我应该退后一步并使用正则表达式吗?在那种情况下,我该如何处理任何级别的锚异常?有没有更好的方法来解决这个问题?