使用boost::property_tree生成带attribute的xml

以前写过一篇"使用Boost property tree来解析带attribute的xml", 可是还有姐妹篇一直没贴。看看前一篇贴了都快都快3年了,时间过的真快。

这一小篇就算是下篇吧,即用boost::property_tree生成带attribute的xml。

直接看demo code:

#include <iostream>
#include <sstream>
#include <boost/property_tree/xml_parser.hpp>

using namespace std;

int main(){
	using boost::property_tree::ptree;
    ptree pt;

    ptree tab1;
    ptree tab2;

    tab1.put("attr1", "value1");
    tab1.put("attr1.<xmlattr>.code", "ABC");
    tab1.put("attr2", "value2");

    tab2.put("attr3", "value3");
    tab2.put("attr3.<xmlattr>.code", "XYZ");

    ptree array;
    auto& a = array.add_child("table1", tab1);
    a.put("<xmlattr>.tabid", "1");

    auto& b = array.add_child("table2", tab2);
    b.put("<xmlattr>.tabid", "2");

    pt.put_child("demoxml", array);

    ostringstream oss;

    write_xml(oss, pt, xml_writer_settings<char>(' ', 2));

    cout << oss.str() << endl;

    return 0;
}

生成的xml如下:

<?xml version="1.0" encoding="utf-8"?>
<demoxml>
  <table1 tabid="1">
    <attr1 code="ABC">value1</attr1>
    <attr2>value2</attr2>
  </table1>
  <table2 tabid="2">
    <attr3 code="XYZ">value3</attr3>
  </table2>
</demoxml>

!!!!!!!欢迎转载,请注明本文链接:http://blog.csdn.net/mosaic/article/details/39047327 !!!!!

时间: 2025-01-04 21:35:04

使用boost::property_tree生成带attribute的xml的相关文章

boost.property_tree解析xml的帮助类以及中文解析问题的解决(转)

boost.property_tree可以用来解析xml和json文件,我主要用它来解析xml文件,它内部封装了号称最快的xml解析器rapid_xml,其解析效率还是很好的.但是在使用过程中却发现各种不好用,归纳一下不好用的地方有这些:获取不存在的节点时就抛出异常 获取属性值时,要排除属性和注释节点,如果没注意这一点就会抛出异常,让人摸不着头脑. 内存模型有点怪. 默认不支持中文的解析.解析中文会乱码. ptree获取子节点 获取子节点接口原型为get_child(node_path),这个n

boost::property_tree读取解析.xml文件

1)read_xml 支持中文路径  boost::property_tree::wptree wpt;    std::locale::global(std::locale(""));    boost::property_tree::xml_parser::read_xml("E:\\测试\\test.xml",wpt); 2)get  ptree pt;    read_xml("D://test1.xml",pt); //读入一个xml文

linq 解析 带命名空间的xml

前言:xml的操作方式有多种,但要论使用频繁程度,博主用得最多的还是Linq to xml的方式,觉得它使用起来很方便,就用那么几个方法就能完成简单xml的读写.之前做的一个项目有一个很变态的需求:C#项目调用不知道是什么语言写的一个WebService,然后添加服务引用总是失败,通过代理的方式动态调用也总是报错,最后没办法,通过发送原始的WebRequest请求直接得到对方返回的一个xml文件.注意过webservice的wsdl文件的朋友应该知道这个是系统生成的xml文件,有点复杂,研究了半

Servlet动态验证码的生成-带数字和字母

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.实现的思路: (1)首先,需要创建一个Servlet.该Servlet通过字节型响应给客户端返回一个图片,该图片是通过JDK中Java 2D的类库来生成一个图片.图片的生成是依靠一个随机数来完成,然后将这个随机数写成图片格式.最后在Session将这个随机的字符串的状态保持住,以便在用户填写后进行对比. (2)其次,在需要加入验证码的JSP页面中,通过<img src="生成验证码

boost.property_tree

//made by davidsu33 //boost.property_tree是一个保存了多个属性值的树形数据结构 //boost.property_tree可以解析xml ini json和info四种格式的文本 #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/xml_parser.hpp> #include <boost/typeof/typeof.hpp> #incl

Force.com微信开发系列(八)生成带二维码的参数

为了满足用户渠道推广分析的需要,公众平台提供了生成带二维码的接口.使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送.目前有两种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1到100000).两种二维码分别适用于账号绑定.用户来源统计等场景. 用户扫描带场景值二维码时,可能推送以下两种事件: 1. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件

利用HibernateTools从数据库表生成带注解的POJO

引用:http://www.cnblogs.com/mingziday/p/4475124.html 在SSH框架中,如果先设计好了数据库,那么下一步就需要从数据库Table生成实体java类和hbm.xml配置文件.在最新的开发框架中,已经支持使用注解,从而避免了繁琐的hbm.xml配置,而且我们可以借助HibernateTools工具完成从Table到实体Java类的转换. 1.首先把HibernateTools插件安装到Eclipse上 打开Eclispe,按照如下操作完成插件安装 Hel

Boost property_tree解析json

使用Boost property_tree解析json 之前使用jsoncpp解析json,现在才知道boost就有解析的库,学习一下吧 property_tree可以解析xml,json,ini,info等格式的数据,用property_tree解析这几种格式使用方法很相似. 解析json很简单,命名空间为boost::property_tree,reson_json函数将文件流.字符串解析到ptree,write_json将ptree输出为字符串或文件流.其余的都是对ptree的操作. 解析

boost::property_tree读取解析ini文件--推荐

boost::property_tree读取解析ini文件 [cpp] view plaincopy #include "stdafx.h" #include <iostream> #include <boost/property_tree/ptree.hpp> #include <boost/property_tree/ini_parser.hpp> int main() { boost::property_tree::ptree pt; boos