2010-09-17 43 views
23

我在嵌入式項目中使用了非常小的XML解析器。它需要編譯到10-15k,不需要驗證,並且需要簡單和便攜。嵌入式C項目是否有一個很好的小XML解析器?

+2

類似於[ C嵌入式系統的XML庫 ](http://stackoverflow.com/questions/1131701/c-xml-library-for-embedded-systems),雖然我沒有看到任何好的答案。 – 2010-09-17 22:27:23

+1

XML是絕對需求嗎? 15k非常緊密,因爲您不需要手動滾動以滿足您的需求,但是如果您找不到那種非常小的現成JSON解析器,我會感到驚訝。 – llasram 2010-09-18 15:44:47

+1

嗨llasram,謝謝你的評論。是的,XML是一項要求。我最終解決了自己的問題:手動滾動符合我要求的XML解析器。由此產生的代碼只有幾K ...但是當我仔細研究它們時,我的XML解析要求變得相當簡單。 – Joe 2010-09-20 17:06:18

回答

5

您可以隨時推出自己的實施。幾年前我做了這個,現在剛剛在代碼mercurial.intuxication.org/hg/cstuff處添加了一些接口文檔。

請注意,解析器從未在生產環境中使用過,甚至沒有經過過多的基本測試;評論也是不存在的,所以如果你需要修改代碼,請盡情發揮代碼的作用;)

+0

謝謝克里斯託弗。這正是我最後所做的一切,我自己實施。我在你的帖子之前實際執行了它,但是無論如何感謝 - 我會看看你的實現,並與我自己的實現進行比較。 – Joe 2010-09-20 17:04:25

+0

@Christoph,這看起來正是我在找的東西 - 感謝您發佈! – mikepurvis 2012-09-15 13:48:05

6

我在搜索一個最近,我發現了SimpleXML(http://simplexml.sourceforge.net/)和稍大sxmlc(http://sourceforge.net/projects/sxmlc/

我發現SimpleXML的更有趣,因爲它更簡單,我沒有嘗試,但看起來它符合我心目中,一單個文件(以及.h和.c)庫不支持異國情調的XML功能。

簡單的XML解析器是XML子集的一個小解析器(除了實體和名稱空間之外的所有東西)。它使用簡單的「每個標籤一個處理程序」界面,適用於資源有限的設備。

1

我開發了sxmlc(「C中的簡單XML」),就像這樣:儘可能少的文件。它只有一個文件,如果您需要通過文檔進行類似XPath的搜索,則可以添加一個可選的「搜索」文件。

它處理DOM風格加載(內存中的整個文檔樹)或SAX風格的加載(每當讀取節點的屬性或在節點上讀取文本時調用回調函數)。如果記憶是一個問題,你會對SAX感興趣。

有些人還對它可以解析文件或內存緩衝區這一事實感興趣(當您將XML作爲Web回覆時很有用)。

它處理自版本4到#define以來的Unicode文件,因此如果您不需要Unicode,只需不定義SXMLC_UNICODE,二進制文件中不會有任何權重增加。

我也不得不說它保留評論當寫回XML到磁盤!當人們花時間在XML文件中解釋配置語法(「put'true'以啓用特殊壓縮...」)時,我總是感到抱歉,這些文件在應用程序保存後會被擦除。

它在Linux和Windows下編譯。我很高興地將它嵌入到路由器中,我得到了很好的反饋。因爲我想盡可能保持簡單,所以我可能不會添加新的功能,而是改進現有的功能(並糾正錯誤,當然!:))。除非有錯誤報告,否則我的研發活動並不十分活躍。

4

嘗試yxml - 這是一個非常小而且快速的非驗證解析器。