我正在做邮件解析应用程序,它需要将HTML文件转换为纯文本。 对此,我发现了一些转换的脚本。 我想在C++中做同样的事情。使用C++将HTML转换为纯文本
所以,请给我建议任何跨平台和开源的C++库,用于将HTML转换为纯文本。
预先感谢 问候 对于SubBi
我正在做邮件解析应用程序,它需要将HTML文件转换为纯文本。 对此,我发现了一些转换的脚本。 我想在C++中做同样的事情。使用C++将HTML转换为纯文本
所以,请给我建议任何跨平台和开源的C++库,用于将HTML转换为纯文本。
预先感谢 问候 对于SubBi
尝试使用正则表达式提取HTML标签,并保存为结果文件中的文本。但这并不简单。使用此帮助类DEELX - Regular Expression Engine。
感谢您的链接到DEELX。我并不总是喜欢处理包括提升。 – mfperzel 2010-03-09 16:51:35
看看html2text。这是一个命令工具,不是纯粹的lib,但包含剥离和转换html的代码。所以你应该可以使用它。
由于“明显的”,因为它可能声音,你可以只保留>
& <
我认为你误解了我的问题。我的愿望是将HTML转换为文本。 – 2010-03-10 04:45:34
@subbi:HTML标签包含在< & >之间,所以剥离它们会给你文本:>&<之间的所有内容。当然,我只是简单地介绍一下,您需要注意一些特殊标签(即
我发布的Windows which originally came from @Ben Anderson's C# solution的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;
}
“转换”是什么意思? Html是纯文本!你想剥离html标签吗? – neverlord 2010-03-09 15:04:14
是的。我想剥离HTML标签 – 2010-03-12 08:19:48