2010-12-16 95 views
2

我在C或C++中尋找一個簡單的非驗證XML解析器。單個文件無法驗證的XML解析器/閱讀器

幾年前,我發現一個只是一個單一的文件解決方案,但我找不到 它了。

我在一些鏈接和建議的非常小和輕量級的 非常適合嵌入式平臺。

+0

爲什麼要在嵌入式平臺上使用XML? – 2012-07-18 15:38:16

回答

1

怎麼樣像pugixml。從他們的網站...

pugixml是一個輕量級C++ XML 處理庫。其特點是:

  • 具有豐富的穿越/修改功能類似DOM接口
  • 極快非驗證XML從XML文件構建DOM 樹分析器/緩衝
  • 的XPath 1.0實現對複雜數據驅動的樹查詢
  • 使用Unicode接口變種
  • 完整的Unicode支持和 自動編碼轉換

該庫極其便攜,易於集成和使用。

pugixml自2006年開發並維護 並有許多用戶。所有 代碼都是根據MIT 許可證分發的,使得它在 中可以完全免費使用在開源和 專有應用程序中。

另外,這個answer有更多信息。

還有tinyxmlRapidXml

+0

我最後用tinyxml去了。 – Matt 2011-01-03 00:01:27

2

Expat

您可以用或不用驗證和「流模式」工作。它非常輕巧。

+0

我不確定內存佔用情況,但代碼大小是一個很好的150k(在x86上),這不是我稱之爲輕量級的內存......對於內存來說,最大的問題是它是否分配噸每個字符串和每個DOM對象的小塊(這會導致大量開銷和可能的內存碎片),或者它是否將大量數據保留在較大的分配中。理想情況下,輕量級的XML解析器會就地修改輸入字符串,在需要的位置插入空終止符,並將其用於輸出。 – 2010-12-16 03:31:07

+0

謝謝,但對我的需求來說太大了。 – Matt 2010-12-16 07:35:29

1

絕對有一個純粹的C,微小的XML解析器可用。它在SO的早期答案中被引用,但我現在找不到它。如果我沒有記錯,那只是幾百行代碼。

更新:這裏的提問/回答引用它:

Is there a good tiny XML parser for an embedded C project?

和實際代碼:

http://mercurial.intuxication.org/hg/cstuff/file/tip/tinyxml

+0

謝謝,我實際上去了另一個叫做tinyxml的解析器,它與這個不同。 – Matt 2011-01-03 00:01:54

0

RapidXML是一個單頭(如果你想要額外的功能,多頭)超輕量,超快速的實現。它可以在「破壞性」模式下運行,即通過將指針設置到XML中並可能覆蓋一些指針,避免所有額外的內存分配和數據副本。

tinyxml不完全是單頭,但與其他解析器相比,它仍然相當輕量級。我已經使用了它五年沒有遇到任何問題。作者最近開始使用「tinyxml-2」,據說它更好,甚至更輕,但我還沒有機會嘗試那個。