21xrx.com
2024-11-05 21:57:25 Tuesday
登录
文章检索 我的文章 写文章
C++读写XML文件
2023-07-03 05:18:12 深夜i     --     --
C++ XML文件 读写操作

C++是一种广泛使用的程序设计语言,它具有高效性能和强大的扩展性。在开发过程中,处理XML文件是一种常见的需求。因此,在本文中,我们将介绍如何使用C++来读写XML文件。

读取XML文件

在C++中,我们可以使用许多XML解析器来读取XML文件,例如TinyXML、RapidXML和pugixml。这里我们将使用pugixml作为演示示例。

步骤1:安装和配置pugixml

首先,从pugixml的官方网站下载最新版本,并将其添加到您的项目中。接下来,在您的项目中包含pugixml头文件。

步骤2:加载XML文件

要读取XML文件,请使用pugixml的load_file函数。以下是示例代码:


#include "pugixml.hpp"

#include <iostream>

using namespace std;

int main() {

  pugi::xml_document doc;

  pugi::xml_parse_result result = doc.load_file("example.xml");

  if (!result)

    cout << "Failed to load XML file." << endl;

    return -1;

  

  cout << "Loaded XML file successfully." << endl;

  return 0;

}

在这里,我们首先创建了一个pugixml文档对象。然后,我们使用load_file函数来加载XML文件并将其解析为文档对象。如果解析失败,我们将输出一个错误消息。

步骤3:遍历XML树

一旦我们成功地加载了XML文件,我们就可以遍历XML树并读取其元素和属性。以下是示例代码:


#include "pugixml.hpp"

#include <iostream>

using namespace std;

int main() {

  pugi::xml_document doc;

  pugi::xml_parse_result result = doc.load_file("example.xml");

  if (!result)

    cout << "Failed to load XML file." << endl;

    return -1;

  

  cout << "Loaded XML file successfully." << endl;

  pugi::xml_node root = doc.first_child();

  for (pugi::xml_node node = root.first_child(); node; node = node.next_sibling()) {

    cout << "Node name: " << node.name() << endl;

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

    for (pugi::xml_attribute attr = node.first_attribute(); attr; attr = attr.next_attribute()) {

      cout << "Attribute name: " << attr.name() << endl;

      cout << "Attribute value: " << attr.value() << endl;

    }

  }

  return 0;

}

在这里,我们遍历XML树并输出每个节点和其属性的名称和值。我们可以使用first_child和next_sibling函数来找到每个节点,并使用name函数和child_value函数来获取节点名称和节点值。同样,我们可以使用first_attribute和next_attribute函数来获取每个节点的属性,并使用name函数和value函数来获取属性的名称和值。

写入XML文件

在C++中,我们可以使用pugixml来创建和修改XML文件。

步骤1:创建XML文件

要创建一个新的XML文件,请使用pugixml的xml_document类。以下是示例代码:


#include "pugixml.hpp"

#include <iostream>

using namespace std;

int main() {

  pugi::xml_document doc;

  pugi::xml_node decl = doc.append_child(pugi::node_declaration);

  decl.append_attribute("version") = "1.0";

  decl.append_attribute("encoding") = "utf-8";

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

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

  child.append_attribute("id") = "1";

  child.append_child(pugi::node_pcdata).set_value("This is a child node.");

  doc.save_file("example.xml");

  cout << "XML file saved successfully." << endl;

  return 0;

}

在这里,我们首先创建了一个pugixml文档对象。然后,我们使用append_child函数创建一个XML声明,并向其添加version和encoding属性。接下来,我们使用append_child函数创建了一个名为“root”的根节点。然后,我们使用append_child函数创建了一个名为“child”的子节点,并向其添加一个名为“id”的属性和一个文本内容。

最后,我们使用save_file函数将XML文档保存到文件中。

步骤2:修改XML文件

要修改现有的XML文件,请使用pugixml解析该文件并在其基础上进行修改。以下是示例代码:


#include "pugixml.hpp"

#include <iostream>

using namespace std;

int main() {

  pugi::xml_document doc;

  pugi::xml_parse_result result = doc.load_file("example.xml");

  if (!result)

    cout << "Failed to load XML file." << endl;

    return -1;

  

  cout << "Loaded XML file successfully." << endl;

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

  child.append_attribute("new_id") = "2";

  child.text().set("This is a modified child node.");

  doc.save_file("example.xml");

  cout << "XML file saved successfully." << endl;

  return 0;

}

在这里,我们首先使用load_file函数加载现有的XML文件并将其解析为文档对象。然后,我们使用select_node函数查找名为“child”的子节点,并向其添加一个名为“new_id”的属性和一个新的文本内容。

最后,我们使用save_file函数将修改后的XML文档保存到文件中。

结论

C++是一种强大的程序设计语言,可以轻松处理XML文件。使用pugixml,您可以读取、创建和修改XML文件,并轻松地与其他系统集成。请按照上述步骤,开始使用C++读写XML文件吧!

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复