Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

Besplatne C ili C++ XML Biblioteke za Parsiranje

Poslednja Dopuna: 2012-02-15

Ova stranica pokušava da pruži poređenje postojećih besplatnih C ili C++ XML biblioteka za parsiranje. To uključuje i kompleksne parsere kao i lagane parsere.

Ova ​​lista naravno, nije sasvim detaljna, ali tvrdi se da obuhvata sve besplatne biblioteke za parsiranje koje imaju značajnu bazu korisnika, koje se manje ili više aktivno održavaju i da pokrivaju najrasprostranjenije desktop PC platforme, tj Win32, Unix, Linux, Mac-OS, BSD. Dakle, ako mislite da sam propustio jednu, molim vas recite mi.

Počeću sa uporednom tabelom koja pruža kratak pregled svih dostupnih biblioteka. Sledeći odeljak daje malo više detalja, uglavnom na osnovu mojih ličnih utisaka i/ili iskustva na Win32 platformi. Ako pronađete bilo kakve greške, ili želite da doprinesete ovoj tabeli poređenja pružajući povratne informacije sa sopstvenim iskustvima, dobrodošli ste da mi pošaljete e-mail na lars.ruoff@gmx.net


Uporedna Tabela

Sledeća tabela daje pregled najpopularnijih besplatnih C ili C++ XML biblioteka za parsiranje. Većina njih su multi-platforme i dolaze sa C/C++ izvornim kodom. Pogledajte moje lične komentare ispod.

Biblioteka Jezik Karakteristike/Interfejsi Licenca Platforme/Pakovanja
Full blown (SAX,DOM,Validating) XML Parser Libraries:
Xerces
http://xml.apache.org/xerces-c/index.html
C++ DOM, SAX2, XML Schema, Namespaces, Validation Apache License, Version 2.0 Precompiled libraries for Windows, UNIX, Linux, etc. Optionally source+makefiles.
Arabica
http://www.jezuk.co.uk/cgi-bin/view/arabica
C++ DOM, SAX2, XPath BSD style C++ source with VC7, VC8 and Unix makefiles
libxml2
http://xmlsoft.org/
C, various language bindings DOM, SAX (limited), XPath, XmlTextReader (pull) MIT License Linux, Unix, Windows, CygWin, MacOS, MacOS X, RISC Os, OS/2, VMS, QNX, MVS, ...
libxml++
http://libxmlplusplus.sourceforge.net/
C++ DOM, SAX Gnu LGPL (see libxml2)
MSXML
MSXML at msdn.microsoft.com
C++, COM interface DOM, SAX2, XSLT, XML Schemas Proprietary (Microsoft) MS Windows only. Comes with Windows XP/Vista.
Fast/Low footprint XML Parser Libraries:
expat
http://expat.sourceforge.net/
C, various 3rd party language bindings available Stream oriented. Event based. Various third party SAX/DOM wrappers and language bindings. MIT license C source
TinyXml
http://www.grinninglizard.com/tinyxml/
C++ DOM zlib license C++ source with VC6 and Unix makefiles
Xmlio
http://www.fxtech.com/xmlio/
C++ C++ I/O stream oriented. "pull" model. Gnu LGPL C++ source with VC6 and Unix makefiles
XmlLite
Article at msdn.microsoft.com
C++ Stream oriented, "pull" model. Proprietary (Microsoft) MS Windows only. Part of Vista SDK.
RapidXml
http://rapidxml.sourceforge.net/index.htm
C++ DOM-style Boost 1.0 or MIT License Portable C++, header only.
XMLParser library from Frank Vanden Berghen
http://www.applied-mathematics.net/tools/xmlParser.html
C++ DOM-style Aladdin Free Public License Source code with makefiles and VC6 workspace.
PugiXML
http://code.google.com/p/pugixml/
C++ DOM style, with interface to walk the tree. XPath MIT License C++ source
libroxml
http://www.libroxml.net/
C DOM style LGPL v2.1 Source tar.gz or debian package

Moji Komentari

Xerces

http://xml.apache.org/xerces-c/index.html

Potpuno validan XML 1.0 parser. Veliki i moćan. Nisam ga lično testirao.

Veličina Windows DLL-a 1.8Mb. Kažu da je relativno spor. Dobra dokumentacija, primeri i uputstvo. Usaglašen sa XML 1.0, delimično sa XML 1.1, DOM lv1, DOM lv2 Core, delimično sa DOM lv3, SAX 1.0/2.0, Namespaces, XML Schema.

Arabica

http://www.jezuk.co.uk/cgi-bin/view/arabica

SAX2, DOM, XPath i delimična XSLT implementacija za korišćenje sa expat, libxml, Xserces ili MSXML. Nije testiran.

Arabika nije XML parser za sebe. Umesto toga, on koristi osnovni parser kao što je expat, libxml, Xerces ili MSXML da obradi parsiranje nižeg nivoa. Cilj arabike je da obezbedi lepu standardnu C++ implementaciju za DOM i SAX2 interfejse ovih parsera. Dakle, Arabika mora biti pripremljena i izgrađena za jedan od osnovnih parsera pre upotrebe. To može da učini instalaciju pomalo nezgodnom i zahteva dodatno vreme za podešavanje. Arabika+expat izgleda kao zanimljiva kombinacija, kako u pogledu performansi/memorijskih resursa tako i u pogledu lakoće korišćenja. (Doduše nisam je lično testirao).

Paket sadrži kratak primer koda za svaki API.

libxml2

http://xmlsoft.org/

Gnome XML biblioteka za parsiranje. To je standardna XML biblioteka od GNU developera. Može biti mučno da se pokrene i da radi na Windows-u, jer u velikoj meri zavisi od druge GNU infrastrukture (glib i td). Uključena dokumentacija je oskudna, ali postoji mnogo eksternih sajtova koji pružaju dokumente, primere, uputstva.

libxml++

http://libxmlplusplus.sourceforge.net/

C++ vezivanje za libxml2. Tj. morate da imate instaliran libxml2 kako bi koristili libxml++. Poseduje lep standardni C++ interfejs za libxml2. Na Windowsu ga je teško instalirati i podesiti zbog višestrukih zavisnosti od drugih GNU biblioteka. Na primer, koristi Glib::ustring umesto std:strings. Kratak priručnik i napomena su uključeni.

Upozorenje: Za Win32, libxml++ 1.0 više odgovara nego libxml++2.x, zbog jake glibmm zavisnosti.

expat

http://expat.sourceforge.net/

Veoma brz, XML parser nižeg nivoa za male i ugrađene aplikacije ili kao osnova za API parsere višeg nivoa. Stream orijentisan. Bazira se na događajima. Razni 3rd party SAX/DOM omotači i jezička vezivanja. Posebno, pogledajte expatpp C++ wrapper za expat. (Nije testiran).

Kaže se da je robustan i dobro testiran. Koristi se sa mnogim open source projektima.

TinyXml

http://www.grinninglizard.com/tinyxml/

Nije testiran. Tu je još jedan projekat, TiCPP - TinyXML++, koji ima za cilj da bude napredniji "C++ style" interfejs za TinyXml.

Xmlio

http://www.fxtech.com/xmlio/

Brz i malen. Koristi vlasnički stream orijentisan "pull" model. Ograničenja:

Moji testovi su pokazali da, osim ASCII karaktera može čitati i druge.

XmlLite

Article at msdn.microsoft.com
XmlLite Documentation

Osnovnii Microsoft lagani C++ XML parser visokih performansi. "Osnovni ciljevi XmlLite su jednostavnost korišćenja, efikasno izvšavanje i usklađenost sa standardima." Nije testiran.

Ima za cilj da obezbedi laganiju i jednostavniju alternativu za MSXML sa fokusom na osnovni C++ razvoj (za razliku od upravljanog/.NET programiranja). XmlLite ima jednostavan "pull" programski model sa stream-orijentisanom XmlReader klasom. Ima podršku za veliki skup zajedničkih kodiranja karaktera ali samo ograničenu podršku za DTD. Kao što je i uobičajeno, za Microsoft proizvod, postoji mnogo kvalitetne dokumentacije i članaka.

RapidXml

http://rapidxml.sourceforge.net/index.htm

Ovo je DOM-stil in-situ parser napisan u modernom C++, koji pokušava da bude što je moguće brži . Tvrdi se da je "ozbiljno brz i mali parser, [sa] integracijom bez muke". Cela biblioteka se nalazi u jednoj datoteci zaglavlja, i ne zahteva izgradnju ili konfiguraciju. Koncizno onlajn uputstvo uključujući primere je dostupno. Nije testiran.

Takođe možete da proverite Boost.PropertyTree biblioteku, koja predstavlja viši interfejs nivo, a koristi RapidXml kao podrazumevani XML parser.

XMLParser biblioteka Frank Vanden Berghen

http://www.applied-mathematics.net/tools/xmlParser.html

Jednostavan i brz parser DOM-tipa. Podržava XML namespaces, širok spektar skupova karaktera i kodiranja. Ne zavisi od drugih biblioteka osim . Malo uputstvo se nalazi na sajtu. Nisam ga lično testirao.

[Direktan link na datoteku biblioteke]

PugiXML

http://code.google.com/p/pugixml/

"Lagan, jednostavan i brz XML parser za C++." Prednosti i mane (po specifikaciji)

Sajt sadrži i kratku stranicu sa dokumentacijom uključujući i neke primere koda koji ilustruju korišćenje biblioteke. Nisam ga lično testirao.

libroxml

http://www.libroxml.net/

Ova biblioteka je minimalna, jednostavna za korišćenje, C implementacija za XML parsiranje datoteka. Libroxml cilja uglavnom ugrađeni softver i okruženja, ali možete da je koristite kad god treba da radite sa XML-om, jer libroxml je lagan i brz.

Informacija od developera: Pakovanje je tar.gz ili Debian pakovanje (još uvek nije u debian bazi). Kompajlira se pod Linuxom, MacOSXom i Windowsom (koristiteći cmake). Nema zavisnosti, osim jedne - mutex (prirodni critical section za Windows ili pthread za Linux i OSX).

Cilja ugrađeni sfotver tako da je API sličan DOM-u ali sa vrlo niskim memorijskim resursima, jer indeksira samo XML sadržaj unutar datoteke umesto da učitava sve.

API podržava XML parsiranje datoteka ili bafera, navigaciju unutar stabla, rukuje sa velikim xpath podskupom, stablo može da bude kreirano/izmenjeno u RAM-u, a zatim uskladišteno (serijalizovano) u fajl ili bafer. Namespace će biti u potpunosti podržan u sledećem izdanju.

Nisam ga lično testirao.





Published (Last edited): 15-05-2013 , source: http://lars.ruoff.free.fr/xmlcpp/