<?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);

最新文章

  1. python logging colorlog
  2. DLL导出函数和类的定义区别 __declspec(dllexport)
  3. CSS中加号、星号及其他符号的作用
  4. python学习笔记系列----(二)控制流
  5. Android中Bitmap和Drawable
  6. JavaScript谁动了你的代码
  7. 参数请求post, get , delete中的基本使用(2)
  8. Git工作中用法(Gitlab)
  9. 关于Oracle备份中的fractured block
  10. 事务的使用示例及WinForm实现中的若干问题
  11. Android项目中打jar包 和 使用
  12. ios UIImagePickerController简单说明
  13. select change事件给其它元素赋值,本select的value或tex
  14. 一步一步学习Vue(十一)
  15. 大数据学习之HDFS基本命令操作05
  16. HDU 6301 Distinct Values
  17. vue.JS 介绍
  18. js中的内置对象(还没怎么看)
  19. Go语言的类型转换和类型断言
  20. ASP.NET MVC - PageData的应用

热门文章

  1. Unix网络编程之环境搭建
  2. HDU 5389 Zero Escape(DP + 滚动数组)
  3. Lesson 2 Building your first web page: Part 2
  4. vue的钩子函数
  5. Gym - 100637B Lunch 规律
  6. jdbc参数传递
  7. [Chromium文档转载,第007章]JNI on Chromium for Android
  8. Linux常用系统管理软件
  9. QNX与Linux两家未来有望独霸车载电子操作系统
  10. 【转】python的zipfile压缩、解压缩