C++解析xml的开源库有很多,在此我就不一一列举了,今天主要说下Rapidxml,我使用这个库也并不是很多,如有错误之处还望大家能够之处,谢谢。
康平ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!附:
官方链接:http://rapidxml.sourceforge.net/
官方手册:http://rapidxml.sourceforge.net/manual.html
之前有一次用到,碰到了个"坑",当时时间紧迫并未及时查找,今天再次用到这个库,对这样的"坑"不能踩第二次,因此我决定探个究竟。
先写两段示例:
创建xm:
void CreateXml() { rapidxml::xml_document<> doc; auto nodeDecl = doc.allocate_node(rapidxml::node_declaration); nodeDecl->append_attribute(doc.allocate_attribute("version", "1.0")); nodeDecl->append_attribute(doc.allocate_attribute("encoding", "UTF-8")); doc.append_node(nodeDecl);//添加xml声明 auto nodeRoot = doc.allocate_node(rapidxml::node_element, "Root");//创建一个Root节点 nodeRoot->append_node(doc.allocate_node(rapidxml::node_comment, NULL, "编程语言"));//添加一个注释内容到Root,注释没有name 所以第二个参数为NULL auto nodeLangrage = doc.allocate_node(rapidxml::node_element, "language", "This is C language");//创建一个language节点 nodeLangrage->append_attribute(doc.allocate_attribute("name", "C"));//添加一个name属性到language nodeRoot->append_node(nodeLangrage); //添加一个language到Root节点 nodeLangrage = doc.allocate_node(rapidxml::node_element, "language", "This is C++ language");//创建一个language节点 nodeLangrage->append_attribute(doc.allocate_attribute("name", "C++"));//添加一个name属性到language nodeRoot->append_node(nodeLangrage); //添加一个language到Root节点 doc.append_node(nodeRoot);//添加Root节点到Document std::string buffer; rapidxml::print(std::back_inserter(buffer), doc, 0); std::ofstream outFile("language.xml"); outFile << buffer; outFile.close(); }
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。