我一直在处理从XML文件中获取的HTML字符串。我试图想出一种方法来在带有格式的richtextbox中显示这些字符串。 所以 e.g。
<p>This is a <strong>HTML</strong> string from the <em>XML</em> file</p>
或
<p>This is our <span style="text-decoration: underline;">response</span></p>
应该在richtextbox中显示如下:
这是来自 XML 文件的 HTML 字符串
这是我们的回复&lt;&lt; - 这应该加下划线
我不太清楚如何解决这个问题。而且我不太确定WebBrowser类如何在这里工作,因为HTML字符串是单独的,并且不会形成完整的HTML文件。
此外,我需要一种方法来反转格式化(HTML编码)一旦在richtextbox中进行任何更改,因为它们将被写回XML文件。
我有办法实现这个目标吗?我真的可以使用帮助。我很难过。
修改
如果它有帮助,这里是我从中获取字符串的XML部分(类似于此)。
<Field id="13598" type="1"><p><strong>This </strong>is our <em>response</em></p></Field>
我基本上试图允许用户在Field中编辑和保存字符串。
编辑2:
我设法使用WebBrowser控件来满足我的要求,但我遇到了一个新问题。看看这里: Editing HTML with a WYSIWYG Editor 任何帮助将不胜感激!
答案 0 :(得分:3)
我使用WYSIWYG HTML editor解决了这个问题。但是,我正面临一个新问题,如果有人能提供帮助,那就太好了!
这是我的新问题: Editing HTML with a WYSIWYG Editor
答案 1 :(得分:1)
您是否使用扩展RTB来显示html,因为据我所知,从CodeProject网站,.NET RichTextBox控件只允许您使用RTF代码或纯文本文件保存和加载文件。因此,您需要扩展RTB才能获得该功能。
这是链接 - RTB to save Html。
但是如果你可以避免它并将xml直接加载到RTB,那么它的工作代码就好here。
有关RTB格式化代码的更多信息,check here
答案 2 :(得分:1)
Winz,我对你的要求有点失落。
根据您的评论...
"I'm trying to display them in a RTB as how they'd appear in on a Web Page"
您希望将HTML标记呈现为实际页面,例如
<img />
标记呈现为实际图片。
您希望将HTML标记呈现为文本,如果您使用各种语法颜色“查看页面源”时将其显示
问题......
HTML标记和RTF specification有很大的不同,因此您需要将标记转换为RTF,以使RichTextBox在页面出现时显示HTML!
解决您的问题......
要在.NET中将HTML标记呈现为网页,您可以使用内置的WebBrowser控件。此控件在后台使用Microsoft的IE引擎,但要注意,它对某些标准(如HTML5和CSS3)不是很友好。您可以使用( IIRC )browser feature controls
要将HTML标记呈现为文本,如果您使用语法着色来“查看页面源”,则可以使用RichTextBox 到范围。 Here是使用XML的示例,但由于XML和HTML非常相似,因此您可以修改HTML语法呈现的解决方案。
注意:语法高亮基本上只是渲染文本以使用特定颜色的某些颜色,I.E。标签可能为红色,而属性可能为蓝色,注释可能为绿色。
这是另一种语法荧光笔示例:
http://dotnet-csharp-programming.blogspot.co.uk/2010/04/xml-highlighting-in-rich-textbox.html
其他解决方案......
要将HTML内容呈现为页面,您可以考虑为.NET找到第三方浏览器控件。我知道FireFox渲染引擎有一个,Chrome也可能有一个。 Here是关于替换内置WebBrowser控件的stackoverflow文章。
为了呈现HTML语法,您可能还会考虑使用Scintilla.NET,或者您可以购买商业产品,例如ActiPro's Syntax Editor