4

我正在使用 VC++ 2010 Express,并尝试包含 HTML Tidy 以对 HTML 代码字符串执行清理。我想要做的是将HTML作为字符串处理(不是来自文件)并将处理后的清理HTML保存到字符串(不是文件)。该项目是一个 C++ Windows 窗体项目,编译器是 /CLR。

我曾多次尝试以各种方式将 Tidy 附加到我的项目中。我每次尝试都失败了,我只是不知道从这里去哪里。最有希望的是一个名为 TidyManaged 的​​ .NET 包装器,但我找不到任何文档来解释如何将它与 C++ 一起使用(它似乎是为 C# 设计的)。各种 C++ 包装器根本不适合我。似乎文档非常缺乏如何使它们工作。

此外,我准备接受一个根本不使用 tidy 的解决方案,而是使用其他一些等效的 HTML 清理工具。我担心 Tidy 的时代(2000 年 8 月)以及它是否对当今较新的 XHTML 标准仍然有效。

此外,如果可能的话,我愿意将 C 库直接合并到我的代码中,而不依赖于 DLL,但我不知道如何使这项工作或即使它可以工作。

任何有关如何解决此问题的建议将不胜感激,请记住这是我们在这里讨论的 HTML(通常是格式错误的 HTML 和 XHTML)而不是 XML。

提前致谢!

PS - 我是 C++ 新手:/

4

1 回答 1

3

解决这个问题已经将近 48 小时了。解决方案发现!这里是...

使用此处http://www.codeproject.com/KB/cs/ZetaHtmlTidy.aspx中非常简单的 .NET 包装器将 VC 项目转换为 VC++ 2010 ok 并编译为 DLL ok。下面是我用来调用它的代码:

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 静态库(发布和调试)。然后我能够将他的包装类合并到我的应用程序中,并指向包含和 lib 文件。最终结果正是我想要的,一个将 tidy 合并到我的应用程序中而无需依赖 dll 的解决方案。整个经历加快了我将 C 库附加到 C++ 应用程序的学习曲线。

感谢您的建议,我希望有人觉得这篇文章有用。

于 2011-09-02T01:41:14.487 回答