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

本文关键字:html 属性 错误 格式 使用 | 更新日期: 2023-09-27 18:15:40

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

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

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


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

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

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

你可以这样写:

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

在Oded的注释之后更改了它,这使body HTML保持不变。但是我同意,对于解析HTML, Regex是一个坏主意。Mark的答案更好。