Windows 下使用 libxml2 保留 XML 标签闭合方式并打印内容
可以使用 libxml2 提供的函数 xmlTextWriterWriteRaw() 来保留文档中标签闭合方式,并打印 xml 文件内容到屏幕上。具体步骤如下:
-
使用
xmlReadFile()函数读取 xml 文件,并获取 xml 文档根节点。 -
创建
xmlTextWriter对象,并使用xmlTextWriterStartDocument()函数开始写入 xml 文档。 -
使用
xmlTextWriterWriteRaw()函数将 xml 文档根节点写入 xml 文件。 -
使用
xmlTextWriterEndDocument()函数结束 xml 文档写入。 -
使用
xmlFreeTextWriter()函数释放xmlTextWriter对象。 -
使用
xmlFreeDoc()函数释放 xml 文档对象。
下面是示例代码:
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/xmlwriter.h>
int main()
{
xmlDocPtr doc;
xmlNodePtr root;
xmlTextWriterPtr writer;
int rc;
// 读取 xml 文件,获取 xml 文档根节点
doc = xmlReadFile("example.xml", NULL, 0);
if (doc == NULL) {
printf("Failed to parse document\n");
return -1;
}
root = xmlDocGetRootElement(doc);
// 创建 xmlTextWriter 对象
writer = xmlNewTextWriterFilename("output.xml", 0);
if (writer == NULL) {
printf("Failed to create xml writer\n");
return -1;
}
// 开始写入 xml 文档
rc = xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL);
if (rc < 0) {
printf("Failed to start document\n");
return -1;
}
// 写入 xml 文档根节点
rc = xmlTextWriterWriteRaw(writer, (const xmlChar *)xmlNodeToString(root));
if (rc < 0) {
printf("Failed to write root node\n");
return -1;
}
// 结束 xml 文档写入
rc = xmlTextWriterEndDocument(writer);
if (rc < 0) {
printf("Failed to end document\n");
return -1;
}
// 释放 xmlTextWriter 对象
xmlFreeTextWriter(writer);
// 释放 xml 文档对象
xmlFreeDoc(doc);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/n3rd 著作权归作者所有。请勿转载和采集!