我需要使用 C 或 C++ 提取可能是 XHTML、HTML html 或 WML的 HTML 页面的文档类型。我将以 HTML 文件或数组的形式提供输入。
如果 html 页面不包含标题,则结果应该与页面相关,例如 html result = html 或 xhtml result = xhtml....
这似乎是两个不同的问题:
1)如何简单地从 html 页面中获取“doctype”声明,为此我将建议一些简单的东西,例如:
char doctype[1024];
void
get_doctype(char *html_page)
{
sscanf(html_page, "<!DOCTYPE %1024s>", doctype);
}
然后可能与已知doctype
字符串匹配以获得枚举值。
但是您也在问 2) 如何检测没有 doctype 声明的页面类型。这更难,而且每一页可能有多个正确答案。我建议外包给像libxml这样的库。它具有将输入流验证为特定类型文档的功能。