[英]Convert HTML to Plain Text using c++
我正在做郵件解析應用程序,該應用程序需要將HTML文件轉換為純文本。 關於這一點,我已經找到了一些轉換腳本。 我想在C ++中做同樣的事情。
因此,請向我建議任何用於將HTML轉換為純文本的跨平台和開源C ++庫。
在此先感謝問候Subbi
在嘗試了一些選項之后,我認為更大規模的方法是使用elink。
在ubuntu中:
sudo apt-get install elinks
elinks -dump a.html > a.txt
聽起來“顯而易見”,您可以將所有文本保留在>
& <
之間
嘗試使用正則表達式提取html標簽並將結果保存為文件文本。 但這並不簡單。 使用此幫助類DEELX-正則表達式引擎 。
看看html2text 。 它是一個命令工具,而不是純lib,但是包含剝離和轉換html的代碼。 因此,您應該可以使用它。
我發布了Windows的c ++版本, 該版本最初來自@Ben Anderson的C#解決方案 。 注意,代碼還不夠健壯。 同樣,所有前導和結尾換行符也會被修剪。
// The trimming method comes from https://stackoverflow.com/a/1798170/1613961
wstring trim(const std::wstring& str, std::wstring& newline = L"\r\n")
{
const auto strBegin = str.find_first_not_of(newline);
if (strBegin == std::string::npos)
return L""; // no content
const auto strEnd = str.find_last_not_of(newline);
const auto strRange = strEnd - strBegin + 1;
return str.substr(strBegin, strRange);
}
wstring HtmlToText(wstring htmlTxt) {
std::wregex stripFormatting(L"<[^>]*(>|$)"); //match any character between '<' and '>', even when end tag is missing
wstring s1 = std::regex_replace(htmlTxt, stripFormatting, L"");
wstring s2 = trim(s1);
wstring s3 = std::regex_replace(s2, std::wregex(L"\\ "), L" ");
return s3;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.