我有一個QString,裏面有一些HTML ...有沒有一種簡單的方法來從它剝離HTML?我基本上只想要實際的文字內容。有沒有一種簡單的方法從Qt中的QString去除HTML?
<i>Test:</i><img src="blah.png" /><br> A test case
將成爲:
Test: A test case
我很想知道,如果Qt擁有了這樣的字符串函數或效用。
我有一個QString,裏面有一些HTML ...有沒有一種簡單的方法來從它剝離HTML?我基本上只想要實際的文字內容。有沒有一種簡單的方法從Qt中的QString去除HTML?
<i>Test:</i><img src="blah.png" /><br> A test case
將成爲:
Test: A test case
我很想知道,如果Qt擁有了這樣的字符串函數或效用。
您可以嘗試使用QXmlStreamReader類遍歷字符串並提取所有文本(如果您的HTML字符串保證爲格式正確的XML)。
事情是這樣的:
QXmlStreamReader xml(htmlString);
QString textString;
while (!xml.atEnd()) {
if (xml.readNext() == QXmlStreamReader::Characters) {
textString += xml.text();
}
}
,但我不能確定它的100%QXmlStreamReader API的有效ussage,因爲我已經很壽命長的時間前使用它,可能會忘記一些東西。
QString s = "<i>Test:</i><img src=\"blah.png\" /><br> A test case";
s.remove(QRegExp("<[^>]*>"));
// s == "Test: A test case"
這個答案不足以支持HTML實體的字符串,例如< – 2015-08-12 19:56:20
這個問題,我的頭頂,是'
'被刪除,而不是轉換爲換行符。 –
Marcus
2017-03-24 19:40:29
@Marcus正是這個問題所要求的。沒有一個HTML被轉換成任何東西,這是一個完全不同的請求 – 2017-10-01 04:42:45
如果你不關心性能這麼多,然後QTextDocument
確實將HTML轉換爲純文本的一個不錯的工作。
QTextDocument doc;
doc.setHtml(htmlString);
return doc.toPlainText();
我知道這個問題是舊的,但我正在尋找一個快速和骯髒的方式來處理不正確的HTML。 XML解析器沒有給出好的結果。
我認爲這是最好的答案。它保持基本的格式,如休息。 – 2015-11-12 12:34:27
也許稍微好一點的解決方案是使用'QTextDocumentFragment': 'QString plainText = QTextDocumentFragment :: fromHtml(htmlString).toPlainText();' – Marcus 2017-03-24 19:43:53
你應該讓這是一個真正的答案,而不是評論。我想最好的解決方案。 – 2018-01-25 14:29:28
某些html不完全驗證xml的情況使得它正確工作變得更糟。
如果它是有效的xml(或不是太糟糕的格式),我認爲QXmlStreamReader + QXmlStreamEntityResolver可能不是壞主意。
示例代碼:https://github.com/ycheng/misccode/blob/master/qt_html_parse/utils.cpp
(這可能是一個評論,但我仍然沒有權限這麼做)
這個答案是誰後閱讀這篇文章,並使用QT5或更高版本。只需使用下面的內置函數來轉義html字符即可。
QString str="<h1>some hedding </h1>"; // a string containing html tags.
QString esc=str.toHtmlEscaped(); //esc contains the html escaped srring.
我不想逃避標籤,我想刪除它們。 – 2015-09-22 20:22:11
'QString :: toHtmlEscaped'不會去除html標籤。只需將「<', '>」等字符轉換爲html代碼即可。 – Marcus 2017-03-24 19:36:38
謝謝。我沒有試圖驗證它或提取它。我只是想擺脫它。 – 2010-05-09 23:00:00
哦,我得到的文本*是來自可信來源(不是用戶輸入),所以我應該沒問題。 – 2010-05-09 23:01:35
你是不是指'textString'而不是'textStream'? – 2012-08-25 14:31:20