Boost解析xml——xml写入
<?xml version="1.0" encoding="utf-8"?>
<Config>
<Item name="IP测试报告2017-10-24 09-54-31">
<ChildItem name="Date" desc="" datatype ="string">2017-10-24 09-54-31</ChildItem>
<ChildItem name="FailureCount" desc="" datatype ="int">1</ChildItem>
<ChildItem name="IPAddressCount" desc="" datatype ="int">4</ChildItem>
<ChildItem name="SuccessCount" desc="" datatype ="int">3</ChildItem>
</Item>
</Config>
如何生成以上xml
for (map<wstring, map<wstring, HistoryData>>::iterator it = vect_str.begin(); it != vect_str.end(); it++)
{ //迭代vector
for (map<wstring, HistoryData>::iterator it1 = it->second.begin(); it1 != it->second.end(); it1++)
{
m_pt3.add(L"<xmlattr>.name", it1->second.name);
m_pt3.add(L"<xmlattr>.desc", it1->second.desc);
m_pt3.add(L"<xmlattr>.datatype ", it1->second.datatype);
m_pt3.put_value(it1->second.value);
m_pt2.add_child(L"ChildItem", m_pt3);
m_pt3.clear();
} m_pt1.add_child(L"Item", m_pt2);
m_pt1.add(L"Item.<xmlattr>.name", it->first);
m_pt2.clear();
}
m_pt.add_child(L"Config", m_pt1);
auto settings = boost::property_tree::xml_writer_make_settings<std::wstring>(L'\t', 1);
write_xml(fileName, m_pt, utf8Locale, settings);
如何在现有的xml里插入新的Item如下
<?xml version="1.0" encoding="utf-8"?>
<Config>
<Item name="IP测试报告2017-10-24 09-54-31">
<ChildItem name="Date" desc="" datatype="string">2017-10-24 09-54-31</ChildItem>
<ChildItem name="FailureCount" desc="" datatype="int">1</ChildItem>
<ChildItem name="IPAddressCount" desc="" datatype="int">4</ChildItem>
<ChildItem name="SuccessCount" desc="" datatype="int">3</ChildItem>
</Item>
<Item name="IP测试报告2017-10-24 09-54-32">
<ChildItem name="Date" desc="" datatype ="string">2017-10-24 09-54-32</ChildItem>
<ChildItem name="FailureCount" desc="" datatype ="int">1</ChildItem>
<ChildItem name="IPAddressCount" desc="" datatype ="int">4</ChildItem>
<ChildItem name="SuccessCount" desc="" datatype ="int">3</ChildItem>
</Item>
</Config>
代码
if (auto firstChild = m_pt.get_child_optional(L"Config"))
{
m_pt4 = m_pt.get_child(L"Config");
m_pt.clear();
for (map<wstring, map<wstring, HistoryData>>::iterator it = vect_str.begin(); it != vect_str.end(); it++)
{ //迭代vector
for (map<wstring, HistoryData>::iterator it1 = it->second.begin(); it1 != it->second.end(); it1++)
{
m_pt3.add(L"<xmlattr>.name", it1->second.name);
m_pt3.add(L"<xmlattr>.desc", it1->second.desc);
m_pt3.add(L"<xmlattr>.datatype ", it1->second.datatype);
m_pt3.put_value(it1->second.value);
m_pt2.add_child(L"ChildItem", m_pt3);
m_pt3.clear();
}
m_pt2.add(L"<xmlattr>.name", it->first);
m_pt4.add_child(L"Item", m_pt2);
m_pt2.clear();
}
m_pt.add_child(L"Config", m_pt4);
}
else
{
for (map<wstring, map<wstring, HistoryData>>::iterator it = vect_str.begin(); it != vect_str.end(); it++)
{ //迭代vector
for (map<wstring, HistoryData>::iterator it1 = it->second.begin(); it1 != it->second.end(); it1++)
{
m_pt3.add(L"<xmlattr>.name", it1->second.name);
m_pt3.add(L"<xmlattr>.desc", it1->second.desc);
m_pt3.add(L"<xmlattr>.datatype ", it1->second.datatype);
m_pt3.put_value(it1->second.value);
m_pt2.add_child(L"ChildItem", m_pt3);
m_pt3.clear();
}
m_pt1.add_child(L"Item", m_pt2);
m_pt1.add(L"Item.<xmlattr>.name", it->first);
m_pt2.clear();
}
m_pt.add_child(L"Config", m_pt1);
}
auto settings = boost::property_tree::xml_writer_make_settings<std::wstring>(L'\t', );
write_xml(fileName, m_pt, utf8Locale, settings);
Boost解析xml——xml写入的更多相关文章
- BOOST 解析,修改,生成xml样例
解析XML 解析iworld XML,拿到entity和VisibleVolume的数据 int ParseiWorlds::readXML(const bpath &dir) { ptree ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- 使用boost/property_tree进行XML操作
之前一直用tinyxml来进行XML文件操作,刚刚接触的一个测试项目是使用boost操作的,虽然不清楚这两者的差异,但boost使用起来还挺方便的,所以简单整理一些关于boost解析和创建XML文件的 ...
- python3.4.3 调用http接口 解析response xml后插入数据库
工作中需要调用一个http的接口,等不及java组开发,就试着用python去调用.Python版本3.4.3 完整的流程包括:从sqlServer取待调用的合同列表 -> 循环调用http接口 ...
- JSON解析和XML解析对比
JSON解析和XML解析是较为普遍的两种解析方式,其中JSON解析的市场分额更大.本文系统的分析两种解析方式的区别,为更好地处理数据作准备.由于目前阶段主要是做移动开发,所以本文所描述的JSON解析和 ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- HL7 2.6解析转XML(C#版)
HL7 2.6解析转XML(C#版) 项目中需要解析HL7,所以在网上找到解析代码,但错误很多,所以我修改了一下,测试好用. using System; using System.Collection ...
- Java解析Soap XML
package com.jstrd.tipstock.webservice.jt.base; import java.io.ByteArrayInputStream; import java.util ...
- Android Animation学习(三) ApiDemos解析:XML动画文件的使用
Android Animation学习(三) ApiDemos解析:XML动画文件的使用 可以用XML文件来定义Animation. 文件必须有一个唯一的根节点: <set>, <o ...
- JSON解析和XML解析
一. XML:用到一个开源解析类,GDataXMLNode(将其加入项目中),添加libxml2.dylib框架 经常用到的方法: 1.- (id)initWithXMLString:(NSStrin ...
随机推荐
- html5的代码验证
http://html5.validator.nu/ http://validator.w3.org/#validate_by_uri
- .net 项目分层及规范
1.解决方案命名:公司简称+产品名称.如ABCSOft.BBS 2.解决方案文件夹:以数字排序例如:01.Web表示页面层:02.IBusinessLogic表示业务逻辑接口:03.Bussin ...
- 昼猫笔记 -- 面向对象(II) - 继承
继承 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念. 所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现,还有就是js可以 ...
- Linux samba服务器安装调试。
samba 做为主要的windown 和 Linux 通讯的服务器之一. 1. 查看是否安装了smb服务. #rpm -ga|grep samba 或者 #service smb status ...
- 学习参考《TensorFlow深度学习》高清中文版PDF+英文版PDF+源代码
我们知道,TensorFlow是比较流行的深度学习框架,除了看手册文档外,推荐大家看看<Tensorflow深度学习>,共分5方面内容:基础知识.关键模块.算法模型.内核揭秘.生态发展.前 ...
- 51nod 01背包
#include<cstdio> #include<algorithm> #define REP(i, a, b) for(int i = (a); i < (b); i ...
- php,javascript设置和读取cookie
1.php设置cookie setcookie($name,$value,expire,path,domain,secrue); //$name:指的是cookie的名字:$value指的是cooki ...
- OpenJDK源码研究笔记(十五):吐槽JDK中的10个富有争议的设计
前14篇文章,分享了JDK中值得学习和借鉴的编码和设计方法. 每个硬币都是有两面的.Every coin has two sides. 当然,JDK中也有很多值得改进或者说富有争议的设计. 本篇,就来 ...
- 【转】python的zipfile压缩、解压缩
网上搜索了很多关于python的zipfile压缩.解压缩.觉得讲述比较详细,例子也很明了.由于比较懒,就直接复制了. 以下内容大部分转于 http://blog.csdn.net/jgood/art ...
- Vim插件使用技巧(转)
在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...