什么是最常用的C ++ XML库?

时间:2009-10-09 06:22:00

标签: c++ xml

我通过快速谷歌搜索看到了一些图书馆。通常最常用的C ++ XML实现是什么?

我打算使用XML作为程序配置的手段。我喜欢XML,因为我将使用它的树状结构。如果您认为自己有更合适的解决方案,请随时提及。我想要轻巧简单的东西。也许XML太多了?

编辑:跨平台会更好,但回答一个问题,我正在用Linux编程。

6 个答案:

答案 0 :(得分:7)

看看TinyXML是否可以帮助你

TinyXML是一个简单的小型C ++ XML解析器,可以轻松集成到其他程序中。

答案 1 :(得分:3)

有几个:

Xercers   Big    http://xerces.apache.org/xerces-c/  
expat     small  http://expat.sourceforge.net/

我喜欢外籍人士。但这完全是个人意见 我使用它是因为它很小而且编写C ++包装器很简单。

Xerces就像一个完整的XML解析器,所有的旋钮都是口哨声。 但因此使用它会稍微复杂一些。

答案 2 :(得分:2)

我建议不要使用XML。

我知道这是一个意见问题,但XML确实使用大量标签来混淆信息。此外,即使它是人类可读的,但杂乱实际上妨碍了可读性(我从经验中说出来,因为我们目前有134个XML配置文件......)。此外,由于属性和纯文本之间的混合,因此很难阅读。你永远不知道你需要哪一个。

如果你想要一种已经有明确定义的解析器的语言,我建议使用JSON。

对于解析,只需查看json.org,就可以获得很长的C ++库列表。

答案 3 :(得分:1)

您提出的问题并不完全,但有两种主要的XML解析器,SAX和DOM。

SAX解析器是事件驱动的解析器。当解析器看到XML文档(节点,属性等)的各种元素时,解析器会调用您定义的一些函数或方法。

另一方面,DOM解析器解析整个XML文档并返回表示整个文档的树结构。然后,您的代码可以按照它看到的任何顺序浏览结构。

SAX解析器的内存效率更高,因为它们不需要在内存中表示整个文档。 DOM解析器更易于使用,因为您不仅限于以线性方式处理文档。

答案 4 :(得分:0)

我强烈推荐pugixml

“pugixml是一个C ++ XML处理库,它包含一个具有丰富遍历/修改功能的类DOM接口,一个从XML文件/缓冲区构建DOM树的极快的XML解析器,以及一个XPath复杂数据驱动树查询的1.0实现。还提供完整的Unicode支持,Unicode接口变体和不同Unicode编码之间的转换。“

在商业产品中选择和使用pugixml之前,我已经测试了一些XML解析器,包括一些商业解析器。

pugixml不仅是最快(有时快几倍)的解析器,而且还拥有最成熟和最友好的API。我强烈推荐它。这是非常稳定的产品!我从0.8版开始使用它。现在是1.7。

这个解析器的巨大好处是XPath 1.0实现!对于任何更复杂的树查询,XPath是上帝发送的功能!

具有丰富的遍历/修改功能的类似DOM的界面对于处理现实生活中的“繁重”XML文件非常有用。

它是小巧而快速的解析器。如果您不介意链接C ++代码,它是iOS或Android应用程序的不错选择。

我也测试了TinyXML。它不仅速度慢,而且还存在我的XML文件问题。

基准测试说明了很多: http://pugixml.org/benchmark.html

答案 5 :(得分:0)

我使用过但仍在使用的XML库是:

如果您不需要使用XML,那么我建议不要这样做。

除非您使用代码生成器,否则我也会避免将您正在阅读/编写的内容建模为C ++类。

我还会考虑使用'架构来编码'为读/写生成,但要确保许可证适合您正在做的事情。