使用c ++将HTML转换为纯文本

时间:2010-03-09 15:00:53

标签: c++ html text

我正在做邮件解析应用程序,需要将HTML文件转换为纯文本。 关于这一点,我发现了一些转换的脚本。 我想在C ++中做同样的事情。

因此,请向我推荐任何用于将HTML转换为纯文本的跨平台和开源C ++库。

提前致谢 问候 物SubBi

5 个答案:

答案 0 :(得分:3)

在尝试了几个选项之后,我认为使用elinks更简单的方法就是使用elinks。

在ubuntu中:

sudo apt-get install elinks
elinks -dump a.html > a.txt

答案 1 :(得分:0)

尝试使用正则表达式提取html标记并将结果保存为文件文本。但这并不简单。使用此帮助类DEELX - Regular Expression Engine

答案 2 :(得分:0)

看看html2text。它是一个命令工具而不是纯lib,但包含剥离和转换html的代码。所以你应该可以使用它。

答案 3 :(得分:0)

听起来很“明显”,你可以将所有文字保存在>和&amp;之间。 <

答案 4 :(得分:0)

我发布了适用于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"\\&nbsp;"), L" ");
    return s3;
}