21xrx.com
2024-11-22 04:03:25 Friday
登录
文章检索 我的文章 写文章
C++读写XML文件
2023-06-27 10:44:46 深夜i     --     --
C++ 读取 写入 XML文件 XML解析

C++是一种高效的编程语言,其使用广泛,尤其在开发各种应用程序时更为常见。很多应用程序需要数据存储的功能才能更好地为用户服务,而XML文件是数据存储和传输的一种标准格式。在C++中,读写XML文件有多种方法和库可供使用,下面将介绍几种常用的方法。

1. 使用pugixml库

pugixml是一种快速、轻量级的解析XML文件的库,它提供了灵活、高效的API。在使用pugixml库前,需要将库源码下载到本地,并将源码中的所有文件添加到项目中。然后在代码中添加以下代码:


#include "pugixml.hpp"

int main()

{

  pugi::xml_document doc;

  if (!doc.load_file("example.xml")) return -1;

  pugi::xml_node root = doc.child("root");

  for (pugi::xml_node child : root.children())

  {

     std::cout << "Node name: " << child.name() << std::endl;

     std::cout << "Node value: " << child.child_value() << std::endl;

  }

  return 0;

}

在这个代码片段中,我们首先创建了一个pugi::xml_document对象,用于打开并读取XML文件;然后从文件中读取根节点,并遍历其所有子节点。

2. 使用TinyXML2库

TinyXML2是另一种解析XML文件的库,它比pugixml更易于使用。把TinyXML2添加到项目中后,使用以下代码可以读取XML文件:


#include "tinyxml2.h"

int main()

{

  tinyxml2::XMLDocument doc;

  tinyxml2::XMLError error = doc.LoadFile("example.xml");

  if (error != tinyxml2::XML_SUCCESS) return -1;

  tinyxml2::XMLElement* root = doc.RootElement();

  for (tinyxml2::XMLElement* node = root->FirstChildElement(); node != NULL; node = node->NextSiblingElement())

  {

    std::cout << "Node name: " << node->Name() << std::endl;

    std::cout << "Node value: " << node->GetText() << std::endl;

  }

  return 0;

}

在这个代码片段中,我们同样创建了一个XMLDocument对象并加载XML文件,接着遍历每个子节点并打印出其名称和值。

3. 使用Qt库

Qt是一个功能强大的跨平台应用程序开发框架,它提供了完整的XML支持。使用Qt库进行XML文件的读写非常方便和简单,下面是一个示例:


#include <QFile>

#include <QXmlStreamReader>

int main()

{

  QFile file("example.xml");

  if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return -1;

  QXmlStreamReader reader(&file);

  while (!reader.atEnd())

  {

    reader.readNext();

    if (reader.isStartElement())

    {

      std::cout << "Node name: " << reader.name().toString().toStdString() << std::endl;

      std::cout << "Node value: " << reader.readElementText().toStdString() << std::endl;

    }

  }

  return 0;

}

在上述代码中,我们首先打开了XML文件,并创建了一个QXmlStreamReader对象以解析XML。之后,我们遍历XML文件中的每个节点,然后打印出节点名称和值。

在本文中,我们介绍了三种不同的方法和库以读写XML文件。无论您使用哪种方法,都需要理解XML的结构和语法,以便正确地解析文件并读取其中的内容。希望这篇文章能够帮助您更好地理解C++中的XML读写过程。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章