当前位置:网站首页 > 技术博客 > 正文

xmlinputfactory读取 xml文件



     RapidXml尝试创建最快的XML解析器,同时保留可用性,可移植性和合理的W3C兼容性。它是一个用现代C ++编写的原位解析器,解析速度接近strlen在同一数据上执行的函数。它仅仅只由四个头文件组成,并不要单独进行配置编译,使用起来非常方便。
在RapidXml的官网上,它发布了与其他xml解析库的速度对比,应该可以说RapidXml是目前最快的xml解析器。
在这里插入图片描述
RapidXml通过使用以下几种技术实现了它的速度:
1,原位解析。构建DOM树时,RapidXml不会复制字符串数据,例如节点名称和值。相反,它存储指向源文本内部的指针。
2,使用模板元编程技术。这允许它将大部分工作转移到编译时。通过模板的魔力,C ++编译器为您使用的任何解析器标志组合生成解析代码的单独副本。在每个副本中,所有可能的决定都在编译时进行,并且省略所有未使用的代码。
3,广泛使用查找表进行解析。
4,手动调优的C ++,在几个最流行的CPU上进行了分析。






     我们以下面这个xml为例,找到key值为"ReportIndex"的节点,并在这个节点前面插入一个新的节点"",同时将key值为"ReportIndex"的节点以及后面的节点的offset值都加上4。

 
  

     CXmlParse解析类的头文件如下:

 
  

     cpp实现文件:

 
  

     RapidXml遍历节点跟TinyXml遍历节点的方式一样,都是先获取根节点,然后获取到根节点下方的first_node(),然后通过next_sibling()不停地指向下一个兄弟节点,同时兄弟节点也可以深度去遍历。获取节点的各个属性值也是一样的使用方式。
     本程序为了和原xml文件作对比,就创建了新的文件,如果想在原文件上做修改,直接将std::ofstream out(m_strNewPath);中的m_strNewPath替换为m_strPath即可。
类封装好后,调用也非常方便。

 
  

     附上完整例子代码:Demo

  • 上一篇: python功能模块
  • 下一篇: vulkanrt可以卸载吗
  • 版权声明


    相关文章:

  • python功能模块2025-08-04 18:01:02
  • htm和html一样吗2025-08-04 18:01:02
  • 2017中国指南解读2025-08-04 18:01:02
  • js防抖和节流 区别及实现方式2025-08-04 18:01:02
  • 安装microsoft visual c++ 20102025-08-04 18:01:02
  • vulkanrt可以卸载吗2025-08-04 18:01:02
  • ds1302时钟芯片电路图2025-08-04 18:01:02
  • 峰值信噪比越大越好吗2025-08-04 18:01:02
  • linux系统etc文件作用2025-08-04 18:01:02
  • seo图片素材2025-08-04 18:01:02