这是我尝试用libxml解析的HTML文件
<html>
<head>
<title>Hello World Page</title>
<link rel="stylesheet" type="text/css" href="http://csszengarden.com/214/214.css?v=8may2013">
</head>
<body>
<h3>Hello World</h3>
<br>
<p>Questo e un paragrafo.</p>
<a src="/">LINK</a>
</body>
</html>
这是我从libxml解析教程中获取的示例程序。
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
static void print_element_names(xmlNode * a_node);
int main()
{
xmlDoc *doc = NULL;
xmlNode *root_element = NULL;
const char *Filename = "file.xml";
doc = xmlReadFile(Filename, NULL, 0);
if (doc == NULL) printf("error: could not parse file %s\n", Filename);
else
{ root_element = xmlDocGetRootElement(doc);
print_element_names(root_element);
xmlFreeDoc(doc); }
xmlCleanupParser();
return (0);
}
static void print_element_names(xmlNode * a_node)
{
xmlNode *cur_node = NULL;
for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
if (cur_node->type == XML_ELEMENT_NODE)
printf("node type: Element, name: %s\n", cur_node->name);
print_element_names(cur_node->children);
}
}
给我回复这一系列错误
file.xml:5: parser error : Opening and ending tag mismatch: link line 4 and head
</head>
^
file.xml:11: parser error : Opening and ending tag mismatch: br line 8 and body
</body>
^
file.xml:12: parser error : Opening and ending tag mismatch: body line 6 and html
</html>
^
file.xml:12: parser error : Premature end of data in tag head line 2
</html>
^
file.xml:12: parser error : Premature end of data in tag html line 1
</html>
^
error: could not parse file file.xml
我是libxml的菜鸟,我会根据HTML文件从树中生成和提取数据。我需要在程序中修改什么来解析HTML代码?
答案 0 :(得分:1)
xmlReadFile
解析XML文件。您有一个HTML文件,而不是XML文件。要解析HTML文件,请使用htmlReadFile
代替 [1] 。