是否可以修复未转义的html<和>字符?

时间:2009-12-20 20:20:15

标签: c# html

例如,如果我有这个html:

<div>this is a test < text</div>

&lt;测试后是一个错误,正确的HTML应该是

<div>this is a test &lt; text</div>

但我有很多错误的html文件没有编码,我需要修复此错误,以便我以后可以解析它们。原始数据源不可用,因此唯一的选择是修复我的这个html。

嗯,同样适用于&gt;字符和具有两者的文本&lt;和&gt;字符如“&lt; 2000&gt; - &lt; 2004&gt;”。我想听听可以帮助我的算法或库的想法。感谢。

注意:上面的html示例是一个示例,工作应该在大的html文件上完成。

4 个答案:

答案 0 :(得分:1)

我建议:

识别并映射所有已知标记的位置,例如<div></a>。 替换&lt;和&gt;您在步骤1中构建的地图之外的任何地方。

答案 1 :(得分:1)

1)对于所有已知的html标签,请替换&lt;&gt;使用其他一些字符,例如{{{和}}}。你可以或多或少地使用正则表达式:

Regex.Replace(source,"</?((b|a|i|table|td|all|other|known|html|tags)( [^>]*))>","{{{$1}}}");

2)替换&lt;与&lt;和&gt;使用&gt;

3)替换{{{with&lt;和}}}使用&gt;

答案 2 :(得分:0)

使用像HTML Agility Pack这样的“轻松”HTML解析器非常合适。您按照库解释的方式获取树,然后在每个节点值中替换&lt;和&gt;适合他们的同行。

请点击此处查看示例:Iron python, beautiful soup, win32 app

答案 3 :(得分:0)

执行此操作的一种缓慢方法是将每个HTML文件视为XML文件。然后解析该XML文件的每个节点,并对节点的内容执行Server.HTMLEnocde。由于HTML只是一组定义的XML,因此应该可以使用。