Click here to Skip to main content
Click here to Skip to main content

A managed wrapper for the HTML Tidy library

, 12 Jan 2007 CPOL
Rate this:
Please Sign up or sign in to vote.
A managed C++ for a small part of the HTML Tidy C library

(For the latest changes, please see the history section at the end of the article)


This is a small library in its initial creation state to provide a native .NET way in accessing the functions of the HTML Tidy library.

HTML Tidy is an open source C library for checking and generating clean XHTML/HTML. In other words: You can throw a misformatted HTML to the library and it will do its best to repair the errors and clean unnecessary items/tags from the HTML.

The Library

There already does exist a way to access the library from .NET, namely through the ATL wrapper of Charles Reitzel (SourceForge CVS repository of the sources here). But you need to register the COM ActiveX control first.

To get rid of this registration limitation, I created a C++/CLI wrapper of the original C library of HTML Tidy. This wrapper is a normal library that you can use in your .NET applications by simply adding a reference to the library.

Please note that my created library currently does not deserve to be called "library", because it really just consists of one single function until now.

The reason why I still do publish it here and now is that I want to provide the basic idea as early as possible to anyone being in the same situation than me (by needing a .NET wrapper for HTML Tidy). It's rather ease to take my library as a starting point and add the required functions you need. I did the core work, you simply add the functions you like.

Of course I gradually will add more functions to the library, as my requirements grow. And I also do encourage you to enhance it by yourself and send me your code so that I can include it.

The underlying C library

It was a pleasure to compile the original HTML Tidy C library. After first starting the provided Visual Studio .NET project file, compiled it for debug and release, received no errors, no warnings. Amazing! I never had such a seamless experience with compiling foreign C/C++ libraries.

Using my .NET library

The library currently has one function to call:

public string CleanHtml( string html );

Simply pass a string and get a cleaned up string back. Easy, isn't it?

An example usage could be:

using ( HtmlTidy tidy = new HtmlTidy() )
  string html =
        <meta http-equiv=""Content-Type"" content=""text/html; charset=utf-16"">
        <p>Hello, <b><i>With German</b></i>: ÄÖÜ. Some Chinese: &#35754;.</p>

  string s = tidy.CleanHtml(
    HtmlTidyOptions.ConvertToXhtml );

  Console.WriteLine( s );

As you see, simply pass the string to the function. There is an overload with one option (currently, will be enhanced in the future, too).


In order to redistribute the library, please ensure that the Microsoft CRT runtime DLLs "msvcr80.dll", "msvcm80.dll" and "msvcp80.dll" are also being distributed. The libraries are usually being found in the folder "C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT".


  • 2007-01-14
    Added the section about redistributing the CRT library.
  • 2007-01-12
    First version published.


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Uwe Keim
Chief Technology Officer Zeta Producer Desktop CMS
Germany Germany
Uwe does programming since 1989 with experiences in Assembler, C++, MFC and lots of web- and database stuff and now uses ASP.NET and C# extensively, too. He has also teached programming to students at the local university.
In his free time, he does climbing, running and mountain biking. Recently he became a father of a cute boy.
Some cool, free software from us:
German Developer Community  
Free Test Management Software - Intuitive, competitive, Test Plans. Download now!  
Homepage erstellen - Intuitive, very easy to use. Download now!  
Send large Files online for free by Email
Follow on   Twitter   Google+   LinkedIn

Comments and Discussions

Questionfine Job Pinmemberyves3143-May-13 0:28 
GeneralTargeting 64-bit PinmemberNick Higgs24-Aug-07 0:56 
Is it possible to compile this to target 64-bit editions of Windows?
GeneralThe dll cannot run in ASP.NET Medium trust application Pinmembertsandl13-Mar-07 11:37 
GeneralRe: The dll cannot run in ASP.NET Medium trust application PinsitebuilderUwe Keim13-Mar-07 20:22 
GeneralRe: The dll cannot run in ASP.NET Medium trust application Pinmembertsandl13-Mar-07 20:52 
GeneralRe: The dll cannot run in ASP.NET Medium trust application PinsitebuilderUwe Keim13-Mar-07 21:28 
GeneralRe: The dll cannot run in ASP.NET Medium trust application Pinmembertsandl14-Mar-07 10:28 
GeneralRe: The dll cannot run in ASP.NET Medium trust application PinmemberThomas Haller2-Jul-13 4:14 
GeneralBug Pinmembermike_mmmm1-Mar-07 4:22 
GeneralGreat tool! PinmemberKoen_V28-Feb-07 22:39 
GeneralHave a look at tidyfornet PinmemberFrederik198421-Feb-07 10:50 
GeneralRe: Have a look at tidyfornet PinsitebuilderUwe Keim21-Feb-07 19:17 
GeneralRe: Have a look at tidyfornet Pinmembermike_mmmm1-Mar-07 3:39 
Generalbug - with sample file Pinmembermike_mmmm17-Feb-07 16:04 
GeneralRe: bug - with sample file PinsitebuilderUwe Keim17-Feb-07 20:30 
GeneralRe: bug - with sample file Pinmembermike_mmmm17-Feb-07 22:38 
GeneralRe: bug - with sample file Pinmembermike_mmmm17-Feb-07 22:40 
GeneralHe does it again... PinadminChris Maunder13-Feb-07 19:40 
GeneralRe: He does it again... PinsitebuilderUwe Keim13-Feb-07 20:05 
GeneralNice job PinmemberClickok13-Feb-07 16:03 
GeneralRe: Nice job PinsitebuilderUwe Keim13-Feb-07 19:13 
Generalbig problem with tidy PinmemberMember #81265710-Feb-07 20:11 
GeneralRe: big problem with tidy Pinmembermike_mmmm10-Feb-07 20:15 
GeneralRe: big problem with tidy PinsitebuilderUwe Keim10-Feb-07 21:17 
GeneralRe: big problem with tidy PinmemberMichael Sandrock21-Jun-07 18:03 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.150305.1 | Last Updated 12 Jan 2007
Article Copyright 2007 by Uwe Keim
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid