C语言加载xml文档
时间: 2023-07-09 19:17:35 浏览: 71
要加载XML文档,可以使用C语言中的libxml2库。以下是一个简单的示例代码,用于加载XML文档并打印出其中的元素内容:
```
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main() {
xmlDocPtr doc;
xmlNodePtr root, node;
// 加载XML文档
doc = xmlReadFile("example.xml", NULL, 0);
if (doc == NULL) {
fprintf(stderr, "Failed to open XML document\n");
return 1;
}
// 获取XML文档的根节点
root = xmlDocGetRootElement(doc);
if (root == NULL) {
fprintf(stderr, "Empty XML document\n");
xmlFreeDoc(doc);
return 1;
}
// 遍历根节点下的所有子节点
for (node = root->children; node != NULL; node = node->next) {
if (node->type == XML_ELEMENT_NODE) {
// 打印元素名称和内容
printf("Element name: %s\n", node->name);
printf("Element content: %s\n", xmlNodeGetContent(node));
}
}
// 释放内存并关闭文件
xmlFreeDoc(doc);
xmlCleanupParser();
return 0;
}
```
其中,`xmlReadFile`函数用于加载XML文档,`xmlDocGetRootElement`函数用于获取根节点,`xmlNodeGetContent`函数用于获取节点的内容。遍历子节点时,需要判断节点类型是否为元素节点。在最后,需要调用`xmlFreeDoc`和`xmlCleanupParser`函数来释放内存和关闭文件。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)