Windows10 VS2017 C++ xml解析(tinyxml2库)
首先下载tinyxml2 7.0.1库:
https://github.com/leethomason/tinyxml2/releases
打开tinyxml2,然后升级sdk,解决方案->重定解决方案目标,升级。
然后编译生成dll和库文件,在tinyxml2\Debug-Dll下,将tinyxml2.lib和tinyxml2.dll拷贝到新建的工程目录,在新建工程根目录新建include文件夹,将tinyxml2.h拷入,并将工程->配置属性->vc++目录->包含目录指向此目录。
编码:
#include "pch.h" #include <iostream> #include <tinyxml2.h> #pragma comment(lib, "tinyxml2.lib") using namespace std; int main() { static const char* xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" "<entries>" "<entry name=\"My First Post\" age=\"52\">I believe every human has a finite number of heartbeats. I don't intend to waste any of mine</entry>" "<entry name=\"The Second\" age=\"\">You know, being a test pilot isn't always the healthiest business in the world.</entry>" "<entry>Entry</entry>" "<entry name=\"The Third\" secretdata=\"9809832\">We have an infinite amount to learn both from nature and from each other</entry>" "<entry name=\"Final Post...\" hidden=\"true\" age=\"3\">Across the sea of space, the stars are other suns.</entry>" "</entries>"; tinyxml2::XMLDocument doc; doc.Parse(xml); tinyxml2::XMLHandle docHandle(&doc); tinyxml2::XMLElement *entry = docHandle.FirstChildElement("entries").ToElement(); if (entry) { for (tinyxml2::XMLNode *node = entry->FirstChildElement(); node; node = node->NextSibling()) { tinyxml2::XMLElement *e = node->ToElement(); const char *name = e->Attribute("name"); if (name) cout << name << ": "; cout << e->GetText(); int true_age = e->IntAttribute("age") + 50; cout << " " << true_age << endl; } } return 0; }
如果需要单独使用exe,需要注意带上tinyxml2.dll文件
结果显示:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java 8 开发的 4 大顶级技巧
我使用Java 8编码已经有些年头,既用于新的应用程序,也用来迁移现有的应用,感觉是时候写一些我发现的非常有用的“最佳实践”。 我个人并不喜欢“最佳实践”这个说法,因为它意味着“一刀切”的解决方案,而编码不可能是这样的工作方式——我们需要亲自去发现什么样的解决方案才是有效的。 但是我发现了一些Java 8代码中可以帮助我们的一些选择,让我们一起来看看吧。 1.Optional Optional是一个严重被低估的功能,并且有潜力删除很多困扰我们的NullPointerExceptions。这在代码边界中(要么是正在使用的API,要么是正在暴露的API)特别有用,因为它允许你和你的调用代码来推理所期待的东西。 然而,不加思考和设计就应用Optional可能会导致影响大量的类,并可能导致可读性更差。下面是一些关于如何高效使用Optional的技巧。 Optional应该只用于返回类型 ……不是参数,也不是字段。幸运的是,IntelliJ IDEA的让你打开检查来查看是是否遵循这些建议。 Optional值应在遇到它们的地方中处理。IntelliJ IDEA的建议会防止代码Optional泄漏...
- 下一篇
2018年java技术面试题整理
1、servlet执行流程 客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑后会将信息放入到response并响应到客户端。 2、springMVC的执行流程 springMVC是由dispatchservlet为核心的分层控制框架。首先客户端发出一个请求web服务器解析请求url并去匹配dispatchservlet的映射url,如果匹配上就将这个请求放入到dispatchservlet,dispatchservlet根据mapping映射配置去寻找相对应的handel,然后把处理权交给找到的handel,handel封装了处理业务逻辑的代码,当handel处理完后会返回一个逻辑视图modelandview给dispatchservlet,此时的modelandview是一个逻辑视图不是一个正式视图,所以dispat...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题