使用特定符号(<,>)从html加载HtmlDocument

时间:2012-09-28 09:07:57

标签: c# html parsing xpath html-agility-pack

我正在创建HtmlDocument并使用LoadHtml(string)。我的输入html字符串有时包含符号<>。所以html解析不正确,例如:

我的HTML是 <p>Value < 20 A B C</p>

在这种情况下我的文档OutputHtml是
<p>Value < 20="" a="" b=""></p>

也许我必须在HtmlDocument中设置一些标志,但我没有找到任何有用的东西。

P.S。 HtmlNode具有相同的行为。

1 个答案:

答案 0 :(得分:0)

解决问题的最佳方法是更改​​<中的字符&lt(无需更改字符>

要知道字符<何时是标记,何时“小于”,您可以询问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) + "&lt" + htmlDoc.Substring(i + 1);
                    }
                }
            }
            catch
            {
                Log.Insert("Error: CreateCorrectHtmlDoc");
                return "";
            }
            return htmlDoc;
        }

我正在使用它,它工作正常