0

我有一个 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>
4

2 回答 2

1

我想说你最好的选择是使用HTML Agility Pack之类的东西来解析生成的 HTML,然后要求它重新序列化为字符串(希望能纠正过程中的任何格式问题)。任何对正则表达式或其他直接 HTML 字符串操作的尝试都将变得困难、脆弱和破碎……


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

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

也可以从输入 HTML 中直接在内存中执行此string操作Stream

于 2011-11-24T10:04:52.540 回答
0

你可以使用类似的东西:

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

在 Oded 的评论之后更改了它,这使正文 HTML 保持不变。但我同意,Regex 对于解析 HTML 来说是个坏主意。马克的回答更好。

于 2011-11-24T09:56:00.763 回答