我正在寻找ANSI C中一个非常便携,简约/小的XML /配置语言库,没有外部依赖(或很少),编译低于100K。我需要它用于中等复杂的配置文件,它必须支持Unicode。
更多要求:
谢谢你们。
答案 0 :(得分:3)
这与此问题类似:Is there a good tiny XML parser for an embedded C project?
我能够为C调整以下XML解析器库的编译标志,并在我的Ubuntu机器上减少了超过50%的大小。 Mini-XML是唯一接近您要求的内容:
答案 1 :(得分:2)
对于这种用例,IMO协议缓冲区比XML更好,更好。使用协议缓冲区,您可以获得真实类型和模式,而无需在基础XML之上对它们进行分层。语法也更好。
// The schema file: can serve as documentation for what
// configuration values are available.
message MyAppConfig {
// Set to control the port the app listens on.
optional int32 port = 1 [default=1234];
// Set to control the local hostname.
optional string hostname = 2 [default="localhost"];
}
然后用户的实际配置如下所示:
# I want to listen on a very high port.
port: 50000
主协议缓冲区库不符合您的标准,因为它在C ++中并且非常大。我正在研究相同的upb(即“微”protobufs)的更小实现。它用~5k的ANSI C编写,编译为< 50k。
协议缓冲区同时具有二进制和文本格式。我的库(还)不支持阅读文本格式,但您可以让用户使用Google标准工具将其配置的文本版本提前转换为二进制格式。然后你的应用程序本身只需要读取二进制格式,并且只能使用upb。
upb刚刚到了冒险用户可以尝试的地步,但它仍然有点粗糙,而且API仍然有所改变。如果你对此感到满意,你现在可以尝试潜水。如果你喜欢更稳定的东西,至少要保持警惕。