CentOS 7 使用pugixml 库

安装

pugixml Git下载地址:https://github.com/zeux/pugixml

步骤1:首先,你需要下载pugixml 的源代码。你可以从Github或者源代码官方网站下载。并上传至/usr/local/source_code/ 

步骤2:下载完成后,需要将源代码解压,可以使用以下命令:

 tar -zxvf pugixml-1.13.tar.gz

 步骤3:解压后,切换到源代码目录:

[root@localhost source_code]# cd pugixml-1.13

 步骤4:生成pugixml 静态库,执行如下指令:

mkdir build
cd build
cmake ..
make && make install
[root@localhost build]# cd ..
[root@localhost pugixml-1.13]# cmake .
-- The CXX compiler identification is GNU 8.3.1
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /opt/rh/devtoolset-8/root/usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /usr/local/source_code/pugixml-1.13
[root@localhost pugixml-1.13]# make && make install
[ 50%] Building CXX object CMakeFiles/pugixml-static.dir/src/pugixml.cpp.o
[100%] Linking CXX static library libpugixml.a
[100%] Built target pugixml-static
Consolidate compiler generated dependencies of target pugixml-static
[100%] Built target pugixml-static
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib64/libpugixml.a
-- Installing: /usr/local/lib64/cmake/pugixml/pugixml-targets.cmake
-- Installing: /usr/local/lib64/cmake/pugixml/pugixml-targets-noconfig.cmake
-- Installing: /usr/local/lib64/cmake/pugixml/pugixml-config-version.cmake
-- Installing: /usr/local/lib64/cmake/pugixml/pugixml-config.cmake
-- Installing: /usr/local/lib64/pkgconfig/pugixml.pc
-- Up-to-date: /usr/local/include/pugiconfig.hpp
-- Up-to-date: /usr/local/include/pugixml.hpp

 温馨提示:完成以上步骤后,在/usr/local/lib下会生成libpugixml.so动态库和/usr/local/include下生成pugixml.hpp头文件。你可以使用以下命令查看是否安装成功:

ls /usr/local/lib | grep pugixml
ls /usr/local/include | grep pugixml

如果看到,则说明成功安装了pugixml库 .

快速入门

在/usr/local/source_code 新增pugixml_demo 目录并新增test_pugixml.cpp 文件,文件内容如下:

#include "pugixml.hpp"
#include <iostream>
using namespace std;int main(){pugi::xml_document doc;pugi::xml_parse_result result = doc.load_file("input.xml");if(!result)return -1;cout << "parse result: " << endl;pugi::xml_node root_node = doc.child("platform");pugi::xml_node ip_node = root_node.child("ip");pugi::xml_node port_node = root_node.child("port");pugi::xml_node key_node = root_node.child("key");cout << ip_node.text().as_string() << endl;cout << port_node.text().as_int() << endl;cout << key_node.text().as_string() << endl;return 0;
}

在test_pugixml.cpp 文件所在目录新增input.xml 文件,文件内容如下:

<platform><ip>192.168.1.2</ip><port>50000</port><key>keyvalue</key>
</platform>

编译源码并执行:

[root@localhost pugixml_demo]# g++ test_pugixml.cpp -o test_pugixml -std=c++11 -lpugixml
[root@localhost pugixml_demo]# ll
总用量 340
-rw-r--r--. 1 root root     95 11月 22 18:07 input.xml
-rwxr-xr-x. 1 root root 338744 11月 22 19:20 test_pugixml
-rw-r--r--. 1 root root    615 11月 22 19:20 test_pugixml.cpp
[root@localhost pugixml_demo]# ./test_pugixml
parse result:
192.168.1.2
50000
keyvalue

入门详细

请参考:pugi 快速入门

              pugixml Git地址 

              pugixml 官网开发指南 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用QRCode.js生成动态二维码页面

文章目录 QRCode.js简介HTML结构JavaScript生成动态二维码拓展功能1. 联系信息二维码2. Wi-Fi网络信息二维码 总结 &#x1f389;利用QRCode.js生成动态二维码页面 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&#x1f388;该系列文章专栏…

mysql 存储引擎ROWS与实际行数不一致

引言 在使用 MySQL 数据库时&#xff0c;我们经常会用到 SHOW TABLE STATUS 命令来获取表的统计信息&#xff0c;其中包括行数&#xff08;rows&#xff09;的估计值。然而&#xff0c;有时候我们会发现这个估计值与实际的行数并不一致。本文将探讨这个问题&#xff0c;并提供…

介绍下官网Redis编程模式

缘由 以前只是接触过redis&#xff0c;只有最近才比较深入研究了下&#xff0c;觉得有几个重要的概念可以积累出来&#xff0c;以利于帮助理解redis &#x1f603; 本文仅简述重点概念&#xff0c;和列举相关参考文档链接&#xff0c;但参见文档多来自redis官网&#xff0c;足…

微信小程序开发者工具] ? Enable IDE Service (y/N) ESC[27DESC[27C

在HBuilder运行微信小程序开发者工具报错 如何解决 打开微信小程序开发者工具打开设置--->安全设置--->服务器端口选择打开就可以啦

《C++ Primer》第9章 顺序容器(三)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 9.5 额外的string操作&#xff08;P320&#xff09; 9.5.1 构造string的其他方法 const char *cp "hello, world!"; char arr[] { h,\0,i,\0 }; string s1(cp); // s1 "hello, world!…

代码随想录训练营 | 一刷总结

代码随想录一刷总结 文章目录 代码随想录一刷总结数组数组理论基础二分法双指针法滑动窗口 链表链表理论基础虚拟头节点链表的基本操作反转链表两两交换链表中的节点删除倒数第N个节点链表相交环形链表 哈希表哈希表理论基础数组作为哈希表Set作为哈希表Map作为哈希表 字符串双…

C#中的var究竟是强类型还是弱类型?

前言 在C#中&#xff0c;var关键字是用来声明变量类型的&#xff0c;它是C# 3.0推出的新特征&#xff0c;它允许编译器根据初始化表达式推断变量类型&#xff0c;有点跟javascript类似&#xff0c;而javascript中的var是弱类型。它让C#变量声明更加简洁&#xff0c;但也导致了…

算法设计与分析复习--分支界限法

文章目录 上一篇分支界限法性质装载问题0-1背包问题单源最短路问题最大团问题下一篇 上一篇 算法设计与分析复习–回溯法&#xff08;二&#xff09; 分支界限法性质 分支界限法是按广度优先策略或最小耗费优先遍历问题的解空间树。 搜索解空间&#xff1a; 子集树排列树 …

Promise.all如果其中之一失败,怎么能够拿到其他成功的结果

Promise.all 的基础介绍 作用&#xff1a;Promise.all()方法用于将多个 Promise 实例&#xff0c;包装成一个新的 Promise 实例。 参数&#xff1a;由多个Promise实例组成的数组 const p Promise.all([p1, p2, p3]);p的状态由p1、p2、p3决定&#xff0c;分成两种情况。 &a…

APP自动化之Poco框架

今天给大家介绍一款自动化测试框架Poco&#xff0c;其脚本写法非常简洁、高效&#xff0c;其元素定位器效率更快&#xff0c;其本质基于python的第三方库&#xff0c;调试起来也会非常方便&#xff0c;能够很好的提升自动化测试效率&#xff0c;节省时间。 (一&#xff09;背景…

如何实现数据通过表格批量导入数据库

文章目录 1. 准备工作2. 创建数据库表3. 编写导入脚本4. 优化和拓展4.1 批量插入的优势4.2 错误处理4.3 数据验证4.4 数据转换 5. 总结 &#x1f389;如何实现数据通过表格批量导入数据库 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博客&…

创建git仓库

①git init&#xff1a;用于在一个现有的目录中初始化一个新的 Git 仓库。 # 进入你的项目目录&#xff0c;如果你想要在当前目录下初始化 Git 仓库。 git init 这会在当前目录下创建一个名为 .git 的子目录&#xff0c;其中包含 Git 仓库的所有必要文件和目录。&#xff08;…

初学者必读书籍——两个月速成Python

想学Python的你是不是一直被它生涩难懂的劝退&#xff1f;作为一个自学入门的程序员&#xff0c;依靠这样几本书&#xff0c;两个月就学会了python。不卖关子&#xff0c;我学的就是”python编程三剑客“系列。那么接下来就让我给你介绍介绍吧。 1.《Python编程&#xff1a;从入…

OSG文字-osgText3D(5)

osgText3D 三维立体文字比二维平面文字显示效果更好&#xff0c;相对二维平面文字&#xff0c;它有非常好的立体显示效果。 在实际虚拟现实项目中&#xff0c;过多使用三维立体文字会降低染效率&#xff0c;加重渲染负担&#xff0c;相对平面二维文字&#xff0c;它占用的内存是…

MES系统管理范围及标准

一、计划管理 1.1计划分为:月度计划>周计划>日计划; 1.2MES系统一般都会直接精确到日计划(生产工单及生产指令); 1.3MES系统日计划分为三阶排产方式: 1.3.1日计划直接排到车间,由车间自行安排任务; 1.3.2日计划排到产线或设备,对应的班组长按照计划直接生产; 1.…

掌握Katalon Studio 导入 swagger 接口文档,接口测试效率提升100%

katalon studio大家都已经不陌生了&#xff0c;是一款现在非常主流的自动化测试工具&#xff0c;包括了web、api、APP&#xff0c;甚至PC应用程序都可以使用它来完成自动化测试。 swagger是一款RESTFUL接口的文档在线自动生成软件&#xff0c;swagger是一个规范和完整的框架&a…

asterisk dialplan(extension)学习笔记

列举一些用过的dialplan&#xff0c;记录备忘 exten > 1004,1,Answer();第1步&#xff0c;监听到外部呼入1004这个号码&#xff0c;接听&#xff0c;对方就会看到电话已经接通 exten > 1004,n,Dial(SIP/1004,20,tr);第2步&#xff0c;通过SIP通道&#xff0c;拨打1004这…

Python通过selenium调用IE11浏览器报错解决方法

前提 正常安装Python 工具&#xff0c;selenium 包可以正常导入。IE浏览器驱动 IEDriverServer.exe 已经正确放置到已经添加path目录的文件下。 报错现象&#xff1a; 解决方法 打开浏览器进入 internet 选项 切换到安全页签 &#xff0c;去除“应用保护模式” 再次调用验证…

C语言——I /深入理解指针(一)

一、内存和地址 1byte&#xff08;字节&#xff09; 8bit&#xff08;比特位&#xff09; 1KB 1024byte 1MB 1024KB 1GB 1024MB 1TB 1024GB 1PB 1024TB一个比特位可以存放二进制的0/1的一位 ⽣活中我们把⻔牌号也叫地址&#xff0c;在计算机中我们把内存单元的编号也称为…

真菌基因组研究高分策略(一):比较基因组揭示真菌菌丝和多细胞的起源

真菌是陆地和水生生态系统的重要组分&#xff0c;在有机质循环和跨营养级养分流通等过程中发挥着重要作用。随着测序技术的发展&#xff0c;高通量测序揭示了真菌群落巨大的系统发育和功能多样性&#xff0c;高质量真菌基因组的组装已经成为研究菌丝和潜在基因的进化起源的有力…