我使用WebBrowser Control作为文本编辑器。在用户输入或编辑了一些文本并关闭编辑器之后,我解析了属性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似乎与结束字体-Tag交换。在WebBrowser控件中,一切看起来都很好,但我编写的解析器无法处理HTML。 (在解析器中,我提取所有文本节点,并从每个文本节点爬上DOM树,直到我到达body-Node,沿途寻找文本格式)。另外HtmlAgilityPack表示p-Node的InnerHtml是空的。
是否有一些神奇的方法来自动更正“略微”无效的HTML?
答案 0 :(得分:1)
经过进一步搜索后,我找到了http://corsis.sourceforge.net/index.php/Html2Xhtml
像魅力一样工作,正是我需要做的事情:
来自WebBrowser Control的Html:
<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>
惊人!