有没有一种简单的方法可以从 Qt 中的 QString 中剥离 HTML?
我有一个 QString,里面有一些 HTML...有没有一种简单的方法可以从中去除 HTML?我基本上只想要实际的文本内容。
<i>Test:</i><img src="blah.png" /><br> A test case
会变成:
Test: A test case
我很好奇 Qt 是否有一个字符串函数或实用程序。
I have a QString with some HTML in it... is there an easy way to strip the HTML from it? I basically want just the actual text content.
<i>Test:</i><img src="blah.png" /><br> A test case
Would become:
Test: A test case
I'm curious to know if Qt has a string function or utility for this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您不太关心性能,那么
QTextDocument
在将 HTML 转换为纯文本方面做得非常好。我知道这个问题已经很老了,但我一直在寻找一种快速而肮脏的方法来处理不正确的 HTML。 XML 解析器没有给出好的结果。
If you don't care about performance that much then
QTextDocument
does a pretty good job of converting HTML to plain text.I know this question is old, but I was looking for a quick and dirty way to handle incorrect HTML. The XML parser wasn't giving good results.
您可以尝试使用 QXmlStreamReader 类迭代字符串并提取所有文本(如果您的 HTML 字符串保证是格式良好的 XML)。
像这样的事情:
但我不确定 QXmlStreamReader API 的使用是否 100% 有效,因为我很久以前就使用过它,可能会忘记一些东西。
You may try to iterate through the string using QXmlStreamReader class and extract all text (if you HTML string is guarantied to be well formed XML).
Something like this:
but I'm unsure that its 100% valid ussage of QXmlStreamReader API since I've used it quite longe time ago and may forget something.
有些 html 不能完全验证 xml 的情况会使正确计算结果变得更糟。
如果它是有效的 xml(或者格式不太糟糕),我认为 QXmlStreamReader + QXmlStreamEntityResolver 可能不是一个坏主意。
示例代码位于: https://github.com/y Cheng/misccode/blob /master/qt_html_parse/utils.cpp
(这可以是评论,但我仍然没有这样做的权限)
the situation that some html is not quite validate xml make it worse to work it out correctly.
If it's valid xml (or not too bad formated), I think QXmlStreamReader + QXmlStreamEntityResolver might not be bad idea.
Sample code in: https://github.com/ycheng/misccode/blob/master/qt_html_parse/utils.cpp
(this can be a comment, but I still don't have permission to do so)
这个答案是为那些稍后阅读这篇文章并使用 Qt5 或更高版本的人提供的。只需使用内置函数转义 html 字符,如下所示。
this answer is for who read this post later and using Qt5 or later. simply escape the html characters using inbuilt functions as below.