忽略 当使用HtmlAgilityPack进行解析时

本文关键字:HtmlAgilityPack amp#160 忽略 | 更新日期: 2023-09-27 18:27:33

我正在使用包含非中断空间的html敏捷包解析c#中的html表。

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);

其中page是包含在文本中具有特殊字符 的表的字符串。

<td>&#160;test</td>
<td>number =&#160;123&#160;</td>

使用SelectSingleNode(".//td").InnerText将包含这些特殊字符,但我想忽略它们。

有没有一种优雅的方法可以在不修改源表的情况下忽略这一点(无论是否有Html敏捷包的帮助)?

忽略&#160;当使用HtmlAgilityPack进行解析时

您可以使用HtmlDecode

string foo = HttpUtility.HtmlDecode("Special char: &#160;");

会给你一个字符串:

特殊字符:

您所说的"特殊字符"非中断空格是一个有效字符,可以完全合法地出现在文本中,就像"花式引号"、em破折号等一样。

我们经常希望将某些角色视为对等角色。

  • 因此,您可能希望将em破折号、en破折号和减号/破折号视为是一样的
  • 或者像直引号一样的花式引号
  • 或者是作为一个普通空间的非破坏性空间

然而,这不是HTML敏捷包可以帮助的东西。你需要使用类似字符串的东西。替换或您自己的规范化函数来执行此操作。

我建议:

static string CleanupStringForMyApp(string s){
    // replace characters with their equivalents
    s = s.Replace(string.FromCharCode(160), " ");
    // Add any more replacements you want to do here
    return s;
}