C++实现XML文件解析
时间: 2023-10-20 17:04:28 浏览: 55
XML文件解析可以用许多编程语言实现,包括C语言。下面是一个简单的C程序,可以读取和解析XML文件。
1. 首先需要引入标准头文件和libxml2库文件:
```
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
```
2. 然后定义一个函数,用来读取XML文件并解析:
```
void parse_xml_file(const char* filename)
{
xmlDocPtr doc;
xmlNodePtr cur;
doc = xmlParseFile(filename);
if (doc == NULL)
{
fprintf(stderr, "Failed to parse XML file %s\n", filename);
return;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL)
{
fprintf(stderr, "Empty XML file %s\n", filename);
xmlFreeDoc(doc);
return;
}
if (xmlStrcmp(cur->name, (const xmlChar *)"root"))
{
fprintf(stderr, "Invalid XML file %s, root node not found\n", filename);
xmlFreeDoc(doc);
return;
}
cur = cur->xmlChildrenNode;
while (cur != NULL)
{
if ((!xmlStrcmp(cur->name, (const xmlChar *)"node")))
{
xmlChar* key = xmlGetProp(cur, (const xmlChar *)"key");
xmlChar* value = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1);
printf("Key: %s, Value: %s\n", key, value);
xmlFree(key);
xmlFree(value);
}
cur = cur->next;
}
xmlFreeDoc(doc);
}
```
3. 最后在主函数中调用该函数,并传入要解析的XML文件名:
```
int main()
{
const char* filename = "example.xml";
parse_xml_file(filename);
return 0;
}
```
在这个例子中,XML文件的格式如下:
```
<root>
<node key="key1">value1</node>
<node key="key2">value2</node>
</root>
```
解析XML文件后,程序将输出:
```
Key: key1, Value: value1
Key: key2, Value: value2
```
这就完成了一个简单的XML文件解析程序。