我正在使用htmlcxx库来读取HTML文件并生成包含其他内容的相同HTML文件.
我可以毫无问题地阅读该文件,但只是发出原始HTML文件并未正确包含结束标记.也就是说,当我简单地迭代并输出整个DOM时,不会发出结束标记.
我知道有closingText()一个节点的接口(参见参考资料Node.h),但我似乎无法找到一种方法来使用它让我做我需要的东西.
这是我如何倾销DOM:
it = dom.begin();
end = dom.end();
for (; it != end; ++it)
{
cout << it->text();
}
Run Code Online (Sandbox Code Playgroud)
以上给了我:
<div>
<li>
<div>
(blank)
(blank)
(blank)
<div>
(blank)
Run Code Online (Sandbox Code Playgroud)
对于以下html:
<div>
<li>
<div>
</div>
</li>
</div>
<div>
</div>
Run Code Online (Sandbox Code Playgroud)
除了更改代码之外我还能做些什么吗?
我使用clang API(版本3.1 - 主干153913)编译一些非常简单的代码,如下所示:
class MyClass
{
~MyClass() ;
};
MyClass::~MyClass()
{
}
int main()
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我收到错误消息:test.cpp:20:10:错误:析构函数不能有返回类型
MyClass::~MyClass()
如果有人可以指出我的方向很好.如果将析构函数定义为类内联,则编译正常.
注意我也可以使用clang ++编译:-bash-4.1 $ clang ++ test.cpp
因此,我的clang API使用中必须存在一个设置.任何人都可以表明可能是什么.我一直在寻找缺少的选项/配置.
这是我的clang API用法:
// Include appropriate headers.
int main()
{
clang::DiagnosticOptions diagnosticOptions;
diagnosticOptions.ShowColors=1;
diagnosticOptions.ShowOptionNames=1;
clang::TextDiagnosticPrinter *pTextDiagnosticPrinter =
new clang::TextDiagnosticPrinter(
llvm::outs(),
diagnosticOptions);
llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs> pDiagIDs;
clang::DiagnosticsEngine *pDiagnosticsEngine =
new clang::DiagnosticsEngine(pDiagIDs, pTextDiagnosticPrinter);
clang::LangOptions languageOptions;
languageOptions.GNUMode = 1;
languageOptions.CXXExceptions = 1;
languageOptions.RTTI = 1;
languageOptions.Bool = 1;
languageOptions.CPlusPlus = 1;
clang::FileSystemOptions fileSystemOptions;
clang::FileManager fileManager(fileSystemOptions);
clang::SourceManager …Run Code Online (Sandbox Code Playgroud)