写一段C++源代码读以下XML文件的内容:<ModbusTcpConfig> <ConnectTion IpAddr="192.168.1.2" Port="502"> </ConnectTion> </ModbusTcpConfig>
时间: 2023-12-11 07:05:53 浏览: 82
假设XML文件名为"config.xml",以下是读取该XML文件内容的C语言源代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main() {
xmlDocPtr doc;
xmlNodePtr cur;
xmlChar* ip;
xmlChar* port;
doc = xmlParseFile("config.xml");
if (doc == NULL) {
fprintf(stderr, "Failed to parse XML file.\n");
return 1;
}
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
fprintf(stderr, "Empty XML file.\n");
xmlFreeDoc(doc);
return 1;
}
if (xmlStrcmp(cur->name, (const xmlChar*) "ModbusTcpConfig")) {
fprintf(stderr, "Invalid root element.\n");
xmlFreeDoc(doc);
return 1;
}
cur = cur->xmlChildrenNode;
while (cur != NULL) {
if ((!xmlStrcmp(cur->name, (const xmlChar*) "ConnectTion")) && (cur->type == XML_ELEMENT_NODE)) {
ip = xmlGetProp(cur, (const xmlChar*) "IpAddr");
port = xmlGetProp(cur, (const xmlChar*) "Port");
printf("IpAddr: %s, Port: %s\n", ip, port);
xmlFree(ip);
xmlFree(port);
}
cur = cur->next;
}
xmlFreeDoc(doc);
return 0;
}
```
该代码使用了libxml库解析XML文件,首先打开文件,然后获取XML文件的根元素,判断是否为"ModbusTcpConfig",接着遍历子节点,找到名为"ConnectTion"的元素,并获取其属性"IpAddr"和"Port"的值,最后输出结果。需要注意的是,在使用完xmlChar指针后要及时释放内存,否则可能会造成内存泄漏。
阅读全文