主页 > 其他  > 

开发小技巧分享02:xml解析工具

开发小技巧分享02:xml解析工具
1.百度词条

        可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点。

2.简述应用场景

        上一个章节我们了解了有关json解析的讲解;

        开发小技巧分享 01:JSON解析工具-CSDN博客文章浏览阅读239次,点赞8次,收藏2次。对于开发者而言,我们经常会遇到各种各样的配置文件,很多时候开发人员喜欢用较为轻便的json来存储相关的配置信息。因而,如何解析好json文件就成为了我们开发人员的一项基本技能。_json解析工具 blog.csdn.net/Hellomino_/article/details/144885592?fromshare=blogdetail&sharetype=blogdetail&sharerId=144885592&sharerefer=PC&sharesource=Hellomino_&sharefrom=from_link

        类似的,xml功能与json有很多相类是的地方,不同的是,xml比json多了些属性解读,注释等的用途,对于数据存储而言有了更多的可拓展性。

3.xml解析工具

        这里推荐pugixml解析工具,非常实用pugixml: pugixml 是一个轻量级的 C++ XML处理库 gitee /mirrors/pugixml.git

        简单的只需用到此3个代码文件即可 

 

4.代码简例        

        test.xml

<?xml version="1.0" encoding="utf-8"?> <person name="John" age=30> <address> <street>123 Main St</street> <city>New York</city> <state>NY</state> <zipcode>10001</zipcode> </address> <phone_numbers> <number type="home">555-1234</number> <number type="work">555-5678</number> </phone_numbers> <favorites> <favorite>reading</favorite> <favorite>swimming</favorite> <favorite>cycling</favorite> </favorites> </person>

        test.cpp    //简单的实现遍历所有节点

//test.cpp #include <iostream> #include <fstream> #include <cstring> #include "pugixml.hpp" using namespace std; pugi::xml_document doc; void read_all_nodes(pugi::xml_node node, int depth) { string indent(depth * 2, ' '); // 输出当前节点的名称和内部文本 string name = node.name(); if ("" != name) cout << indent << node.name() << " : " << node.text().get() << endl; // 遍历属性 for (pugi::xml_attribute_iterator it = node.attributes_begin(); it != node.attributes_end(); ++it) { cout << indent << it->name() << " = " << it->value() << endl; } // 递归遍历子节点 for (pugi::xml_node_iterator it = node.begin(); it != node.end(); ++it) { //if() read_all_nodes(*it, depth + 1); } } //查看头部数据 int xml_read(const char* filename) { ifstream inputFile(filename, ios::binary); if (!inputFile.is_open()) { cerr << "无法打开文件" << endl; return -1; } inputFile.close(); if (!doc.load_file(filename)) { cout << "Error loading XML file\n"; return 1; } read_nodes(doc.child("person"), 0); //pugi::xml_node root = doc.child(doc.first_child().name()); // 假设XML文件的根节点是<root> return 0; } int main(int argc, const char* argv[]) { xml_read("test.xml"); if (2 == argc) { xml_read(argv[1]); } else { return -1; } return 0; }

标签:

开发小技巧分享02:xml解析工具由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“开发小技巧分享02:xml解析工具