2010-03-09 10 views
0

Je fais l'application d'analyse de courrier qui a exigé pour convertir le fichier HTML en texte brut. concernant ce que j'ai trouvé quelques scripts qui fait la conversion. Je veux faire la même chose en C++.Convertir du HTML en texte brut en utilisant C++

Alors s'il vous plaît me suggérer des bibliothèques C++ multi-plateforme et open source pour convertir du HTML en texte brut.

Merci à l'avance Cordialement SubBi

+0

Que voulez-vous dire par "convertir"? Html EST texte clair! Voulez-vous supprimer les balises html? – neverlord

+0

oui .Je veux enlever les balises HTML –

Répondre

0

Essayez d'utiliser l'expression régulière extraire les balises HTML et enregistrer le résultat sous forme de texte du fichier. Mais ce n'est pas simple. Utilisez cette classe d'aide DEELX - Regular Expression Engine.

+0

Merci pour le lien vers DEELX. Je n'aime pas toujours avoir à faire face à inclure boost. – mfperzel

0

Jetez un coup d'œil à html2text. C'est un outil de commande et pas une pure lib, mais contient du code qui dépouille et convertit html. Donc, vous devriez être capable de l'utiliser.

0

Comme « évident » que cela puisse paraître, vous pouvez simplement garder tout le texte entre > & <

+0

Je pense que vous avez mal interprété ma question. mon désir est de convertir HTML en texte. –

+0

@subbi: les balises HTML sont entourées entre < & > donc en les effaçant vous donnera le texte: tout entre> & <. Bien sûr, je simplifie à l'extrême, vous aurez besoin de prendre soin de quelques étiquettes spéciales (c'est-à-dire

0

Je posterai C++ version pour Windows which originally came from @Ben Anderson's C# solution. Notez que le code n'est pas encore assez robuste. Toutes les nouvelles lignes de début et de fin seraient également coupées.

// 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; 
} 
Questions connexes