我正在创建HtmlDocument
并使用LoadHtml(string)
。我的输入html字符串有时包含符号<
和>
。所以html解析不正确,例如:
我的HTML是
<p>Value < 20 A B C</p>
在这种情况下我的文档OutputHtml是
<p>Value < 20="" a="" b=""></p>
也许我必须在HtmlDocument中设置一些标志,但我没有找到任何有用的东西。
P.S。 HtmlNode
具有相同的行为。
答案 0 :(得分:0)
解决问题的最佳方法是更改<
中的字符<
(无需更改字符>
)
要知道字符<
何时是标记,何时“小于”,您可以询问if
代码如下:
public static string CreateCorrectHtmlDoc(string htmlDoc)
{
int i = 0;
List<int> index = new List<int>();
try
{
//look for '<'
while ((i = htmlDoc.IndexOf("<", i)) != -1)
{
i += 1;
//regex to find '<' that is no tag
if (Regex.IsMatch(htmlDoc[i].ToString(), "\\d|-") || Regex.IsMatch(htmlDoc[i].ToString(), "[^a-zA-Z!]") && Regex.IsMatch(htmlDoc[i + 1].ToString(), "\\d\\s|-|\\d"))
{
htmlDoc = htmlDoc.Substring(0, i - 1) + "<" + htmlDoc.Substring(i + 1);
}
}
}
catch
{
Log.Insert("Error: CreateCorrectHtmlDoc");
return "";
}
return htmlDoc;
}
我正在使用它,它工作正常