使用c#修复格式错误的html属性

时间:2011-11-24 09:46:01

标签: c# html regex repair

我有一个Web应用程序,它具有由国际象棋软件生成的HTML文件的上传功能,能够包含一个再现国际象棋游戏的javascript播放器。

我不喜欢在框架中加载上传的文件,因此我通过解析文件的动态部分来重建软件生成的HTML和javascript。

HTML的问题在于所有属性值都用撇号而不是引号括起来。我正在寻找一种方法来解决这个问题,使用库或使用c#替换正则表达式。

html看起来像这样:

<DIV class='pgb'><TABLE class='pgbb' CELLSPACING='0' CELLPADDING='0'><TR><TD>

我会将其转换为:

<DIV class="pgb"><TABLE class="pgbb" CELLSPACING="0" CELLPADDING="0"><TR><TD>

2 个答案:

答案 0 :(得分:1)

我说你最好的选择是使用类似HTML Agility Pack的东西来解析生成的HTML,然后让它重新序列化为字符串(希望纠正过程中的任何格式问题)。 Any attempt at Regexes or other direct string manipulation of HTML is going to be difficult, fragile and broken...


示例(当您的HTML存储在硬盘上的文件中时):

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
doc.Save("file.htm");

也可以通过输入HTML的stringStream直接在内存中执行此操作。

答案 1 :(得分:0)

你可以使用类似的东西:

string ouputString = Regex.Replace(inputString, @"(?<=\<[^<>]*)\'(?=[^<>]*\>)", "\"");

在Oded的评论之后改变它,这使得身体HTML保持不变。但我同意,正则表达式解析HTML是一个坏主意。马克的答案更好。