Вопрос: Использование проекта HTML Tidy в Visual C ++ 2010 Windows Forms


Я использую VC ++ 2010 Express, и я пытаюсь включить HTML Tidy для выполнения очистки по строкам HTML-кода. Я хочу сделать процесс HTML как строку (НЕ из файла) и сохранить обработанный очищенный HTML в строку (НЕ к файлу). Проект представляет собой проект форм Windows C ++, компилятор - это / CLR.

Я пытался, больше раз, чем я хотел бы признать, приложить Tidy к моему проекту по-разному. Я потерпел неудачу в каждой попытке, и я просто не уверен, куда идти отсюда. Наиболее перспективной была .NET-оболочка TidyManaged, но я не мог найти никакой документации, чтобы объяснить, как использовать ее с C ++ (она, похоже, предназначена для C #). Различные обертки C ++ не работают для меня вообще. Похоже, в документации крайне не хватает того, как заставить их работать.

Также я готов принять решение, которое не использует аккуратный вообще, но какой-то другой эквивалентный инструмент очистки HTML. Меня волнует возраст Тиди (август 2000 года) и насколько он по-прежнему эффективен для сегодняшних новых стандартов XHTML.

Также, если это возможно, я готов включить библиотеку C в свой код напрямую, не полагаясь на DLL, но у меня нет знаний о том, как сделать эту работу или даже если она может работать.

Любые предложения о том, как это сделать, будут высоко оценены, учитывая, что это HTML, о котором мы говорим здесь (часто разыгрывается HTML и XHTML) и NOT XML.

Заранее спасибо!

PS - Я новичок в C ++: /


4


источник


Ответы:


Эта проблема была почти 48 часов. Решение найдено! Вот...

Использование очень простой .NET-оболочки отсюда http://www.codeproject.com/KB/cs/ZetaHtmlTidy.aspx  преобразовал проект VC в VC ++ 2010 ok и скомпилирован как DLL в порядке. Ниже приведен код, который я использовал для его вызова:

System::String^ TidyMyHTML(String^ MyHTMLString)
{
    using namespace ZetaHtmlTidy;
    HtmlTidy tidy;
    String^ s = tidy.CleanHtml( MyHTMLString, HtmlTidyOptions::ConvertToXhtml );
    return s;
}

Надеюсь, этот пост пощадит кого-то другого, проходящего через то же самое.

РЕДАКТИРОВАТЬ:

Сделав этот шаг, я смог преобразовать файлы проекта VC ++ 2008 из аккуратного источника, прикрепленного к обертке, и обновить их до файлов проектов VC ++ 2010. Затем я смог скомпилировать аккуратный проект (отдельно от его проекта класса оболочки) в статические библиотеки libtidy.lib (как для выпуска, так и для отладки). Затем я смог включить свой класс-оболочку в свое приложение и указать на файлы include и lib. Конечный результат был именно тем, что я хотел, решением, которое включает в себя порядок в моем приложении, не требуя зависимости dll. Весь этот опыт ускорил мою кривую обучения для прикрепления библиотек C к моим приложениям на C ++.

Спасибо за предложения, и я надеюсь, что кто-то найдет это сообщение полезным.


3