Gömülü bir proje için çok küçük bir XML ayrıştırıcısının peşindeyim. 10-15k'ye kadar derlemeyi gerektirir, doğrulamak zorunda değildir ve basit ve taşınabilir olması gerekir.Gömülü bir C projesi için iyi bir küçük XML ayrıştırıcısı var mı?
cevap
Her zaman kendi uygulamanızı yuvarlayabilirsiniz. Bunu birkaç yıl önce yaptım ve şimdi mercurial.intuxication.org/hg/cstuff koduna bazı arayüz belgeleri ekledim.
Lütfen ayrıştırıcının hiçbir zaman bir üretim ortamında kullanılmadığını ve hatta daha fazla test edilmediğini unutmayın; Yorumlar, aynı zamanda, bu yüzden değiştirmek gerekiyorsa kodu grokking eğlenin;)
Teşekkürler Christoph. Sonunda yaptığım işte tam da bu - kendi uygulamamı hazırladım. Aslında mesajınızı önce uyguladım, ancak yine de teşekkürler - Uygulamanıza bir göz atacağım ve kendi başıma kıyaslayacağım. – Joe
@Christoph, bu tam olarak aradığım şey gibi görünüyor - gönderdiğiniz için teşekkürler! – mikepurvis
Aşağıdaki XML ayrıştırıcı kitaplıklarının derleme bayraklarını C'ye göre ayarlayabildim ve% 50'den fazla azaltma yapabildim Ubuntu makinemdeki büyüklükleri.
burada iyi bir tartışma vardır:: Mini-XML istemiş ne tek yakındır
ben, bir aklında ne karşılaşmaları ve yakın zamanda biri için ben SimpleXML (http://simplexml.sourceforge.net/) ve biraz daha büyük sxmlc (http://sourceforge.net/projects/sxmlc/)
Ben daha basit olduğu için, bunu deneyin vermedi SimpleXML daha ilginç buluyorum ama görünüşe bulundu egzotik XML özelliklerini desteklemeyen tek dosya (well .h ve .c) kitaplığı.
Basit XML ayrıştırıcısı, XML alt kümesi için küçük bir ayrıştırıcıdır (varlıklar ve ad alanları hariç). Basit bir "etiket başına tek kullanımlık" arayüzü kullanır ve sınırlı kaynaklara sahip cihazlarla kullanım için uygundur.
sxmlc ("Simple XML in C"), tam olarak şöyle olması için geliştirdim: mümkün olduğunca küçük dosyalar. Belgedeki XPath benzeri aramaya ihtiyacınız varsa, ekleyebileceğiniz isteğe bağlı bir "arama" dosyasına sahip tek bir dosya.
DOM stili yüklemeyi (tüm belge ağacını bellekte) veya SAX stili yüklemeyi (bir düğüm, öznitelikleriyle okunduğunda veya bir düğümde metin okunduğunda geri aramaları çağırır) işler. Bellek bir endişe ise SAX ile ilgileneceksiniz.
Bazı kullanıcılar, dosyaları veya bellek arabelleklerini ayrıştırmasıyla da ilgileniyordu (XML'i bir web yanıtı olarak aldığınızda kullanışlıdır).
Unicode dosyalarını sürüm 4'ten #define
'a kadar işler, bu nedenle Unicode'a ihtiyacınız yoksa, yalnızca SXMLC_UNICODE
'u tanımlamayın ve ikilide herhangi bir ağırlık artışı olmayacaktır.
Ayrıca diske XML yazarken yorumları tutar da söylemeliyim! İnsanlar her zaman XML dosyalarında yapılandırma sözdizimini açıklayan zaman harcadığında ("özel 'özel sıkıştırmayı etkinleştirmek için' koy '...), uygulama tarafından geri yüklendiğinde silindiğinde her zaman üzüldüm.
Linux ve Windows altında derler. İnsanları yönlendiricilerde mutlu bir şekilde gömdüğümden iyi geribildirim aldım.
Mümkün olduğu kadar basit tutmak istediğimden, muhtemelen yeni işlevler eklemeyeceğim, ancak mevcut olanları (ve elbette doğru hatalar! :)) iyileştirmeyeceğim. Hata bildirilmediği sürece, geliştirilmesinde çok aktif değilim.
yxml'u deneyin - gerçekten küçük ve hızlı onaylamayan ayrıştırıcıdır.
- 1. PHP için müstakil bir XML ayrıştırıcısı var mı?
- 2. Java için iyi bir hafif HL7 ayrıştırıcısı var mı?
- 3. Hafif C++ SAX XML ayrıştırıcısı
- 4. Eclipse'de bir ++ C++ projesi oluşturma
- 5. C# 3.0 kodunu ayrıştırmanın iyi bir yolu var mı?
- 6. varolan bir xml belgesini değiştirmek/düzenlemek için en iyi java Xml ayrıştırıcısı
- 7. C# ile wifi konumlandırmasında iyi bir framework/sdk var mı?
- 8. C Önerilen JSON ayrıştırıcısı?
- 9. C Projesi Varsayılan Dizin Düzeni var mı?
- 10. C# html dezenfektanı için iyi bir çözüm var mı?
- 11. İyi bir Açık Kaynak xml ide var mı?
- 12. MSXML'den daha iyi bir IDOMImplementation var mı?
- 13. iyi bir açık kaynak projesi?
- 14. Küçük bir C# projesinde
- 15. Scala projesi için herhangi bir OWASP kontrol aracı var mı?
- 16. WebView yenilemek için daha iyi bir yolu var mı?
- 17. İyi bir web.config editörü var mı?
- 18. C programlama için bir REPL var mı?
- 19. C için bir wxWidgets çerçevesi var mı?
- 20. Küçük resimler için herhangi bir java kütüphanesi var mı?
- 21. Herhangi bir iyi C#, .net haber toplayıcıları var mı?
- 22. Qt için iyi gömülü veritabanı?
- 23. Birim testi kohana ana projesi için herhangi bir iyi öğretici (örnek) var mı?
- 24. java için en iyi html ayrıştırıcısı nedir?
- 25. bir amaç-c projesi
- 26. Bunu yapmak için daha iyi bir şey var mı?
- 27. Bir C++ projesi için nmake nasıl kullanılır?
- 28. C++ için doxygen'i optimize etmenin bir yolu var mı?
- 29. iyi bir anti-desen kaynağı var mı?
- 30. JQP'nin jquery'de xml getirilmesi gibi varolan bir araç var mı?
Benzer şekilde [ C Gömülü Sistemler için XML kütüphanesi ] (http://stackoverflow.com/questions/1131701/c-xml-library-for-embedded-systems) mükemmel bir yanıt görmemekle birlikte . –
XML mutlak bir gereklilik midir? 15k, gereksinimlerinizi karşılamak için elinizin altında olmadığı bir şey için gayet sıkıdır, ancak o kadar küçük olan bir hazır JSON çözümleyici bulamadıysan şaşırırım. – llasram
Merhaba llasram, yorumunuz için teşekkürler. Evet, XML bir şarttır. Sonunda sorunumu çözdüm, sadece bunu yaparak: gereksinimlerimi karşılayan bir XML ayrıştırıcısını yuvarlama. Ortaya çıkan kod sadece birkaç K'da geldi ... ama daha sonra onları tekrar incelediğimde XML ayrıştırma gereksinimlerim oldukça basit çıktı. – Joe