你听说过RapidXML吗?RapidXML是一个非常快速且小巧的C++ XML DOM解析器。它主要针对嵌入式环境、电脑游戏或任何需要优化可用内存或CPU处理能力的应用程序。RapidXML在Boost软件许可下授权,并且其源代码可以免费获取。
特点
限制
pugixml 是一个轻量级、简单且快速的 C++ XML 解析器。它非常小(与 RapidXML 相当),非常快(与 RapidXML 相当),非常易于使用(比 RapidXML 更好)。
试试TinyXML。
TiCPP是TinyXML的“更多C ++”版本。
'TiCPP' 是 TinyXML++ 的官方名称,它是对 TinyXML (http://www.grinninglizard.com/tinyxml/) 的全新接口,利用了许多 C++ 的优势。包括模板、异常和更好的错误处理。它在 doxygen 中也有完整的文档。这个版本非常棒,因为它让你可以像以前一样与 TinyXML 进行交互,或者选择使用新的 'ticpp' 类。你所需要做的就是定义 TIXML_USE_TICPP。它已在 VC 6.0、VC 7.0、VC 7.1、VC 8.0、MinGW gcc 3.4.5 和 Linux GNU gcc 3+ 中进行了测试。
试一下这个:
http://www.applied-mathematics.net/tools/xmlParser.html
它比RapidXML或PUGXML更易于使用和更快。
TinyXML是“简单解析器”中最差的一个。
你觉得 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 *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++数据类型,包括基于指针的链接结构,甚至是(循环)图形(而不仅仅是树)。
希望这有所帮助。
boost::property_tree
很臃肿(增加编译时间和可执行文件大小),而且似乎已经没有人维护了。不建议使用。 - Andreas Haferburg