我在嵌入式项目中使用了非常小的XML解析器。它需要编译到10-15k,不需要验证,并且需要简单和便携。嵌入式C项目是否有一个很好的小XML解析器?
回答
您可以随时推出自己的实施。几年前我做了这个,现在刚刚在代码mercurial.intuxication.org/hg/cstuff处添加了一些接口文档。
请注意,解析器从未在生产环境中使用过,甚至没有经过过多的基本测试;评论也是不存在的,所以如果你需要修改代码,请尽情发挥代码的作用;)
谢谢克里斯托弗。这正是我最后所做的一切,我自己实施。我在你的帖子之前实际执行了它,但是无论如何感谢 - 我会看看你的实现,并与我自己的实现进行比较。 – Joe 2010-09-20 17:04:25
@Christoph,这看起来正是我在找的东西 - 感谢您发布! – mikepurvis 2012-09-15 13:48:05
我能够为C调整以下XML解析器库的编译标记,并且减少了超过50%的大小在我的Ubuntu机器上。迷你XML是唯一一个接近你的要求是什么:
这里有一个很好的讨论:
我在搜索一个最近,我发现了SimpleXML(http://simplexml.sourceforge.net/)和稍大sxmlc(http://sourceforge.net/projects/sxmlc/)
我发现SimpleXML的更有趣,因为它更简单,我没有尝试,但看起来它符合我心目中,一单个文件(以及.h和.c)库不支持异国情调的XML功能。
简单的XML解析器是XML子集的一个小解析器(除了实体和名称空间之外的所有东西)。它使用简单的“每个标签一个处理程序”界面,适用于资源有限的设备。
我开发了sxmlc(“C中的简单XML”),就像这样:尽可能少的文件。它只有一个文件,如果您需要通过文档进行类似XPath的搜索,则可以添加一个可选的“搜索”文件。
它处理DOM风格加载(内存中的整个文档树)或SAX风格的加载(每当读取节点的属性或在节点上读取文本时调用回调函数)。如果记忆是一个问题,你会对SAX感兴趣。
有些人还对它可以解析文件或内存缓冲区这一事实感兴趣(当您将XML作为Web回复时很有用)。
它处理自版本4到#define
以来的Unicode文件,因此如果您不需要Unicode,只需不定义SXMLC_UNICODE
,二进制文件中不会有任何权重增加。
我也不得不说它保留评论当写回XML到磁盘!当人们花时间在XML文件中解释配置语法(“put'true'以启用特殊压缩...”)时,我总是感到抱歉,这些文件在应用程序保存后会被擦除。
它在Linux和Windows下编译。我很高兴地将它嵌入到路由器中,我得到了很好的反馈。因为我想尽可能保持简单,所以我可能不会添加新的功能,而是改进现有的功能(并纠正错误,当然!:))。除非有错误报告,否则我的研发活动并不十分活跃。
尝试yxml - 这是一个非常小而且快速的非验证解析器。
- 1. 是否有一个很好的嵌入式代码小部件
- 2. 是否有一个很好的Windows C++ XML DOM教程?
- 3. XML解析器,一个项目
- 4. 是否有Microsoft Word的嵌入式可视化(PHP)解析器?
- 5. XML解析器目标-C
- 6. PHP HTML解析器(是否没有好的HTML解析器)
- 7. 用Go解析xml,有多个项目
- 8. Drawing2D.Matrix是否有很好的解释?
- 9. 一个简单的C XML解析器
- 10. 什么是最好的XML解析器
- 11. 解析XML与嵌入式HTML
- 12. 是否有一个很好的模板引擎C++
- 13. 使用XPath解析另一个xml中嵌入的xml Spring
- 14. 解析PHP嵌入到XML
- 15. 是否有一个很好的“免费”图形web.config编辑器?
- 16. mercurial是否有一个很好的(gitorious-like)服务器?
- 17. 是否有一个很好的PHP CRUD代码生成器?
- 18. 解析一个复杂嵌套的XML
- 19. 这是一个很好的嵌入式C应用程序的错误报告解决方案吗?
- 20. Xmlpullparser解析嵌套项目
- 21. 是否有一个很好的轻量级多平台C++定时器队列?
- 22. Android:嵌入一个小MapView很慢
- 23. 错误解析XML:没有很好的形成(标记无效)
- 24. XML解析器的Xcode很慢
- 25. 嵌入式C++项目的代码覆盖率分析
- 26. 寻找一个嵌入式JavaScript解析器
- 27. Windows Phone 7解析这个xml项目
- 28. C++有没有Open XML解析器?
- 29. 在Scala中嵌套理解是否是一种很好的风格?
- 30. xml解析iphone,目标C?
类似于[ C嵌入式系统的XML库 ](http://stackoverflow.com/questions/1131701/c-xml-library-for-embedded-systems),虽然我没有看到任何好的答案。 – 2010-09-17 22:27:23
XML是绝对需求吗? 15k非常紧密,因为您不需要手动滚动以满足您的需求,但是如果您找不到那种非常小的现成JSON解析器,我会感到惊讶。 – llasram 2010-09-18 15:44:47
嗨llasram,谢谢你的评论。是的,XML是一项要求。我最终解决了自己的问题:手动滚动符合我要求的XML解析器。由此产生的代码只有几K ...但是当我仔细研究它们时,我的XML解析要求变得相当简单。 – Joe 2010-09-20 17:06:18