如何使用Qt检测剪贴板数据中的HTML

如何使用Qt检测剪贴板数据中的HTML,html,regex,qt,Html,Regex,Qt,我有一个富文本编辑器,我需要在适当的时候解析和清理剪贴板上的数据。每当粘贴的文本包含HTML时,我都会清理它并用正确的HTML更新文本字段 但是,当剪贴板中没有html时,我就不需要运行html清理工具 我的第一个想法是使用Regex并检查其中是否有html标记,但我不确定这是否是解决此问题的最佳解决方案,因为从长远来看,它可能会导致更多的误报等问题 我的问题是,如何检测剪贴板中的HTML? 有没有一种优雅的方法可以解决这个问题而不必求助于Regex?可能是以下功能之一: bool QDomDo

我有一个富文本编辑器,我需要在适当的时候解析和清理剪贴板上的数据。每当粘贴的文本包含HTML时,我都会清理它并用正确的HTML更新文本字段

但是,当剪贴板中没有html时,我就不需要运行html清理工具

我的第一个想法是使用Regex并检查其中是否有html标记,但我不确定这是否是解决此问题的最佳解决方案,因为从长远来看,它可能会导致更多的误报等问题

我的问题是,如何检测剪贴板中的HTML?
有没有一种优雅的方法可以解决这个问题而不必求助于Regex?

可能是以下功能之一:

bool QDomDocument::setContent(...)
此函数从字符串文本读取XML文档,如果成功解析内容,则返回true;否则返回false。因为文本已经是Unicode字符串,所以不进行编码检测

添加剪贴板的混合数据:

// get a html data from a junk
QString htmlText = cliboardString.section("</html>", -2, 0,QString::SectionIncludeTrailingSep)
              .section("<html", 1,-1,String::SectionIncludeLeadingSep);
// check for a validness, correctness etc.
if( !htmlText.isEmpty() ) {
    QDomDocument::setContent(htmlText,...
}

我认为,如果文本看起来像是包含html标记,那么应该应用启发式。文本越短,就越不可靠,因为内容来自剪贴板-因此很可能是损坏的html-您的函数将始终返回false。因此,我总是假设它不是html,并且保存无效的html,相信内容只是纯文本。