例如,如果我有这个html:
<div>this is a test < text</div>
&lt;测试后是一个错误,正确的HTML应该是
<div>this is a test < text</div>
但我有很多错误的html文件没有编码,我需要修复此错误,以便我以后可以解析它们。原始数据源不可用,因此唯一的选择是修复我的这个html。
嗯,同样适用于&gt;字符和具有两者的文本&lt;和&gt;字符如“&lt; 2000&gt; - &lt; 2004&gt;”。我想听听可以帮助我的算法或库的想法。感谢。
注意:上面的html示例是一个示例,工作应该在大的html文件上完成。
答案 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,因此应该可以使用。