如何从 WebBrowser Control 更正无效的 HTML?
How to correct invalid HTML from WebBrowser Control?
我正在使用 WebBrowser 控件作为文本编辑器。在用户输入或编辑一些文本并关闭编辑器后,我解析属性 webBrowser1.Document.Body.OuterHtml
的内容,为另一个应用程序创建一些文本对象。
然而,解析器只适用于有效的 HTML,正如我所想的,WebBrowser 控件只会产生有效的 HTML。不幸的是,通过在编辑器中进行一些复制和粘贴,我能够生成以下内容 HTML:
<BODY {...some Attributes...}>
<P align=left>
<FONT size=7>
some text
<FONT color=#00b700>
more text
</FONT>
<FONT color=#ff0000>
text
<FONT size=7>
text
<FONT color=#00b700>
text
</FONT>
<FONT color=#ff0000>
text
</FONT>
</FONT>
</P>
</FONT>
</FONT>
</BODY>
如您所见,结束的 p-Tag 似乎与结束的 font-Tag 交换了。在 WebBrowser 控件中,一切看起来都很好,但我编写的解析器无法处理 HTML。 (在解析器中,我提取所有文本节点,并从每个节点爬上 DOM-树,直到到达正文节点,沿途寻找文本格式)。另外 HtmlAgilityPack 说 p-Node 的 InnerHtml 是空的。
有什么神奇的方法可以自动更正 "slightly" 无效 HTML 吗?
经过进一步搜索,我发现 http://corsis.sourceforge.net/index.php/Html2Xhtml
工作起来很有魅力,完全符合我的要求:
Html 来自 WebBrowser 控件:
<BODY >
<P align=left>
<FONT size=7>
11111 2222
<FONT color=#00b700>
</FONT>
<FONT color=#ff0000>
?????
<FONT size=7>
11111 2222
<FONT color=#00b700>
</FONT>
<FONT color=#ff0000>
?????
</FONT>
</FONT>
</P>
</FONT>
</FONT>
</BODY>
更正为 Html2Xhtml:
<body>
<p align=\"left\">
<font size=\"7\">
11111 2222
<font color=\"#00b700\">
</font>
<font color=\"#ff0000\">
?????
<font size=\"7\">
11111 2222
<font color=\"#00b700\">
</font>
<font color=\"#ff0000\">
?????
</font>
</font>
</font>
</font>
</p>
</body>
太棒了!
我正在使用 WebBrowser 控件作为文本编辑器。在用户输入或编辑一些文本并关闭编辑器后,我解析属性 webBrowser1.Document.Body.OuterHtml
的内容,为另一个应用程序创建一些文本对象。
然而,解析器只适用于有效的 HTML,正如我所想的,WebBrowser 控件只会产生有效的 HTML。不幸的是,通过在编辑器中进行一些复制和粘贴,我能够生成以下内容 HTML:
<BODY {...some Attributes...}>
<P align=left>
<FONT size=7>
some text
<FONT color=#00b700>
more text
</FONT>
<FONT color=#ff0000>
text
<FONT size=7>
text
<FONT color=#00b700>
text
</FONT>
<FONT color=#ff0000>
text
</FONT>
</FONT>
</P>
</FONT>
</FONT>
</BODY>
如您所见,结束的 p-Tag 似乎与结束的 font-Tag 交换了。在 WebBrowser 控件中,一切看起来都很好,但我编写的解析器无法处理 HTML。 (在解析器中,我提取所有文本节点,并从每个节点爬上 DOM-树,直到到达正文节点,沿途寻找文本格式)。另外 HtmlAgilityPack 说 p-Node 的 InnerHtml 是空的。
有什么神奇的方法可以自动更正 "slightly" 无效 HTML 吗?
经过进一步搜索,我发现 http://corsis.sourceforge.net/index.php/Html2Xhtml
工作起来很有魅力,完全符合我的要求:
Html 来自 WebBrowser 控件:
<BODY >
<P align=left>
<FONT size=7>
11111 2222
<FONT color=#00b700>
</FONT>
<FONT color=#ff0000>
?????
<FONT size=7>
11111 2222
<FONT color=#00b700>
</FONT>
<FONT color=#ff0000>
?????
</FONT>
</FONT>
</P>
</FONT>
</FONT>
</BODY>
更正为 Html2Xhtml:
<body>
<p align=\"left\">
<font size=\"7\">
11111 2222
<font color=\"#00b700\">
</font>
<font color=\"#ff0000\">
?????
<font size=\"7\">
11111 2222
<font color=\"#00b700\">
</font>
<font color=\"#ff0000\">
?????
</font>
</font>
</font>
</font>
</p>
</body>
太棒了!