使用Boost读写XML文件 [英] Using Boost to read and write XML files

查看:329
本文介绍了使用Boost读写XML文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有使用Boost读写XML文件没有什么好的办法(太简单的方法)?

Is there any good way (and a simple way too) using Boost to read and write XML files?

我似乎无法找到任何简单的示例使用Boost读取XML文件。你能指出我使用升压用于读取和写入XML文件的一个简单的示例?

I can't seem to find any simple sample to read XML files using Boost. Can you point me a simple sample that uses Boost for reading and writing XML files?

如果不提升,有没有什么好的和简单的库读写,你可以推荐XML文件? (它必须是一个C ++库)

If not Boost, is there any good and simple library to read and write XML files that you can recommend? (it must be a C++ library)

推荐答案

您应该尝试 pugixml 重量轻,操作简单,速度快对于C XML解析器++

有关pugixml的最好的事情就是在的XPath 支持,TinyXML的和RapidXML缺乏。

The nicest thing about pugixml is the XPath support, which TinyXML and RapidXML lack.

引用RapidXML的作者我想感谢Arseny Kapoulkine为他的pugixml工作,这是这个项目的灵感和5% - 30%,比pugixml快,最快的XML解析器,我知道。他曾测试针对pugixml的0.3版本,最近已达到0.42版​​

Quoting RapidXML's author "I would like to thank Arseny Kapoulkine for his work on pugixml, which was an inspiration for this project" and "5% - 30% faster than pugixml, the fastest XML parser I know of" He had tested against version 0.3 of pugixml, which has reached recently version 0.42.

下面是pugixml文件的摘录:

Here is an excerpt from pugixml documentation:

的主要特点是:


  • 低内存消耗和碎片(轻取pugxml为〜1.3倍,TinyXML的 - 〜2.5倍,Xerces的(DOM) - 〜4.3倍1)。确切的数字可以看出,在与现有的解析器部分比较。

  • 极高的解析速度(轻取pugxml是〜6倍,TinyXML的 - 〜10倍,Xerces的-DOM - 〜17.6倍1

  • 极高的解析速度(当然,我重复自己,但它是如此之快,它在测试XML优于外籍2.8倍)2

  • 或多或少符合标准(将正确解析任何符合标准的文件,与DTD相关的问题除外)

  • pretty太多的错误无知的(它不会呛像你和放大器;我,就像老外会;它将解析与错误的编码数据文件;等等)

  • 干净的界面(一个沉重重构pugxml的一个)

  • 或多或少的Uni code感知(实际上,它假定输入数据的UTF-8编码,虽然它很容易与ANSI工作 - 没有UTF-16目前(见今后的工作),以帮助转换功能(UTF-8< - > UTF-16/32(无论是的std :: wstring的&放默认; wchar_t的))

  • 完全符合标准的C ++ code(由科莫严格模式批准);图书馆是多平台(请参见平台列表参考)

  • 灵活性高。您可以通过解析选项控制文件的解析和DOM树建设的许多方面。

好吧,你可能会问 - 有什么收获?一切都是那么的可爱 - 这是小型,快速,稳健,清洁解析XML解决方案。什么不见​​了?好吧,我们是公平的开发商 - 所以这里是一个不好的特性列表:

Okay, you might ask - what's the catch? Everything is so cute - it's small, fast, robust, clean solution for parsing XML. What is missing? Ok, we are fair developers - so here is a misfeature list:


  • 内存消耗。这可难倒了所有的基于DOM解析器,我知道的 - 但是当SAX解析器来了,就没有机会了。您不能处理的内存小于4 GB 2 GB的XML文件 - 并快速。虽然pugixml表现更好,比其他所有基于DOM解析器,因此,如果你坚持使用DOM,这不是一个问题。

  • 内存消耗。好吧,我重复自己。再次。当其他解析器将允许您提供一个恒定存储(甚至是一个存储器映射区)的XML文件,pugixml不会。所以你必须将整个数据复制到非恒定存储。此外,应该解析器的生命周期内持续(对于多关于寿命的原因在下面写的)。同样,如果你真行与DOM - 它不应该是一个问题,因为整体的内存消耗少(好,虽然你需要一个连续的内存块,这可能是一个问题)

  • 缺乏验证,DTD处理,XML命名空间编码妥善处理。如果你需要的 - 去采取MSXML或XercesC之类的东西

这篇关于使用Boost读写XML文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆