从WebBrowser到有效的XHTML的C#HTML
因此,我们在编辑模式下使用webBrowser控件,允许人们输入文本,然后将该文本发送到服务器以供所有人查看. IE,它是一个HTML输入框.
该框的HTML输出不是标准的XHTML,因为它只是一个webBrowser控件,所以我需要一种方法将任何错误的HTML转换为XHTML.我读了SGML,后来又用过: private static string Html2Xml(string txtHtmlString) { var xhtml = new Sgml.SgmlReader(); var sw = new StringWriter(); var w = new XmlTextWriter(sw); xhtml.DocType = "HTML"; xhtml.InputStream = new StringReader(txtHtmlString); while ((!xhtml.EOF)) { w.WriteNode(xhtml,true); } w.Close(); return sw.ToString(); } 我基本上将HTML字符串设置为该方法,并返回“suposed”正确的XHTML.但是,它没有传递XHTML检查,它返回的数据只是一个基本的 <html><head></head><body></body></html> 格式.因此,不适合XHTML. 那么,我如何格式化以实际输出正确的XHTML? MindShares站点上的SGML文档已经不多了,所以不知道从哪里开始. 本质上,我们需要WebBrowser控件中的HTML(无效的XHTML)输出到XHTML,以便我们可以将它附加到XMPP.msg.Html元素(仅限有效的XHTML).如果系统检测到HTML中的任何代码无效,则会将XMPP.msg.Html标记为空白,因此我知道上述方法无效. 谢谢! 解决方法
建议使用TinyMCE或HtmlAgilityPack(可作为Nuget包或来自codeplex).
TinyMCE允许用户使用适当的格式控件执行富文本编辑,并输出生成的Html. 另一方面,HtmlAgilityPAck是一个库,它允许您传入由您的方法生成的HtmlStream,并将其输出为有效的Xhtml流. 在HtmlAgilityPAck中使用此示例的粗略示例如下: var sb = new StringBuilder(); var stringWriter = new StringWriter(sb); string input = "<html><body><p>This is some test test<ul><li>item 1<li>item2<</ul></body>"; var test = new HtmlAgilityPack.HtmlDocument(); test.LoadHtml(input); test.OptionOutputAsXml = true; test.OptionCheckSyntax = true; test.OptionFixNestedTags = true; test.Save(stringWriter); Console.WriteLine(sb.ToString()); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- html – 创建调色板,还是或?
- html – 检查Firebug或Chrome DevTools中的悬停状态
- javascript – 如何在highlight.js中关闭自动语言检测并渲
- html – 防止弹性项目高度展开以匹配其他弹性项目
- html – Absolute Position div不会推送其他内容
- html – 如何在bootstrap中div的中间水平对齐表单
- html – 如何使用CSS折叠一组标签的边框?
- entity-framework – 域事件中的新实体ID
- 解决微信开发工具上trace无法检测到设备,一直停留在“正在
- Web服务 – ServiceStack客户端和不明确的路由