我有一个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>
答案 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的string
或Stream
直接在内存中执行此操作。
答案 1 :(得分:0)
你可以使用类似的东西:
string ouputString = Regex.Replace(inputString, @"(?<=\<[^<>]*)\'(?=[^<>]*\>)", "\"");
在Oded的评论之后改变它,这使得身体HTML保持不变。但我同意,正则表达式解析HTML是一个坏主意。马克的答案更好。