我正在寻找一个简单,干净,正确的XML解析器在我的c++项目中使用。我应该自己写吗?
TinyXML试试。
http://sourceforge.net/projects/tinyxml
试试TinyXML或IrrXML…两者都是轻量级XML解析器(无论如何,我建议您使用TinyXML)。
TinyXML最适合简单的XML工作,但是如果你需要更多的特性,那么试试apache项目中的Xerces。转到下一页阅读更多关于它的功能。
http://xerces.apache.org/xerces-c/
我喜欢Gnome xml解析器。它是开源的(MIT许可,所以你可以在商业产品中使用它),速度快,并且有基于DOM和SAX的接口。
http://xmlsoft.org/
TiCPP是TinyXML的“更c++”版本。
“TiCPP”是官方名称tinyxml++的缩写。它是TinyXML (http://www.grinninglizard.com/tinyxml/)的一个全新接口,使用了许多c++的优点。模板、异常和更好的错误处理。在doxygen中也有完整的记录。这真的很酷,因为这个版本让你的界面和以前完全一样,或者你可以选择使用新的'ticpp'类。您所需要做的就是定义TIXML_USE_TICPP。它已经在vc6.0, vc7.0, vc7.1, vc8.0, MinGW gcc 3.4.5和Linux GNU gcc 3+中进行了测试
TinyXML,还有boost。propertytree。后者并不满足所有的官方要求,但非常简单。
如果你关心效率/内存管理,不要使用TinyXML(它倾向于分配很多的小块)。我个人最喜欢RapidXML。
< >强RapidXML < / >强呢?RapidXML是一个用c++编写的非常快速和小型的XML DOM解析器。它主要针对嵌入式环境、电脑游戏或任何其他需要大量内存或CPU处理能力的应用程序。RapidXML是根据Boost软件许可证授权的,其源代码是免费提供的。
特性
限制
来源:wikipedia.org: / / Rapidxml
根据您的使用,您可以使用XML数据绑定?< >强CodeSynthesis XSD < / >强是一个c++ XML数据绑定编译器,由Code Synthesis开发,在GNU GPL和专有许可证下双重授权。给定一个XML实例规范(XML Schema),它生成表示给定词汇表以及解析和序列化代码的c++类。
CodeSynthesis XSD的一个独特特性是它支持两种不同的XML模式到c++的映射:内存中的c++ /树和面向流的c++ /解析器。c++ /Tree映射是一种具有树状内存数据结构的传统映射。c++ /Parser是一种新的类似sax的映射,它将存储在XML实例文档中的信息表示为特定于词汇表的解析事件的层次结构。与c++ /Tree相比,c++ /Parser映射允许处理不适合内存的大型XML文档,执行面向流的处理,或使用现有的内存表示。
来源:wikipedia.org: / / CodeSynthesis XSD
gSOAP呢?它是开源的,在GPL许可下免费提供。尽管名字如此,gSOAP工具包是一个通用的XML数据绑定工具,它允许您将C和c++数据自动绑定到XML。不需要使用XML解析器API,只需让它以XML格式为您读取/写入数据。如果您真的需要一个超级简单的c++ XML解析器,那么gSOAP可能是多余的。但是从2001年引入gSOAP以来,它在许多工业应用中都表现良好。
下面是一个简单的功能列表:
例如:
class Address { std::string name; std::vector<LONG64> number; time_t date; };
然后在上面的Address类声明上运行"soapcpp2"来生成soap_read_Address和soap_write_Address XML读取器和写入器,例如:
Address
soap_read_Address
soap_write_Address
Address *a = new Address(); a = ...; soap ctx = soap_new(); soap_write_Address(ctx, a); soap_end(ctx); soap_free(ctx);`
这将生成Address a对象的XML表示形式。通过用XML名称空间细节注释头文件声明(这里没有显示),这些工具还生成模式。这是一个简单的例子。gSOAP工具可以处理非常广泛的C和c++数据类型,包括基于指针的链接结构,甚至(循环)图(而不仅仅是树)。
Address a
希望这能有所帮助。
pugixml -轻量级,简单,快速的c++ XML解析器 非常小(与RapidXML相当),非常快(与RapidXML相当),非常容易使用(更好的比RapidXML)
试试这个: http://www.applied-mathematics.net/tools/xmlParser.html < br > 它比RapidXML或PUGXML更简单、更快 TinyXML是最糟糕的“简单解析器”
我是c++ 新手,在尝试了本页上的几个不同的建议后,我必须说我最喜欢pugixml。它有易于理解的文档和高层次的API,这是我一直在寻找的。