Comparison of fast,
multiplatform XML libraries
Projects Main Page
Get PDF (Better formated)
The eXpat XML Parser (http://expat.sourceforge.net/)
The XML C Library for Gnome (http://www.xmlsoft.org/)
Apache Xerces for C++ parser (http://xml.apache.org/xerces-c/index.html)
Language Technology Group RXP XML parser (http://www.ltg.ed.ac.uk/software/xml/index.html)
Trolltech QT XML Module (http://doc.trolltech.com/3.1/xml.html)
IBM alphaWorks XML4C (http://www.alphaworks.ibm.com/tech/xml4c)
Oracle 9i XML Developers Kit for C (http://otn.oracle.com/tech/xml/xdk_c/content.html)
Oracle 9i XML Developers Kit for C++ (http://otn.oracle.com/tech/xml/xdk_cpp/content.html)
Java XML pack (http://java.sun.com/xml/downloads/javaxmlpack.html)
|
|
Expat |
libXML |
Xerces C |
RXP |
QT |
XML4C |
XDK 9i |
J2EE |
|---|---|---|---|---|---|---|---|---|
|
Author |
SourceForge |
Gnome |
Apache |
LT Group |
Trolltech |
IBM |
Oracle |
Sun |
|
License |
MIT |
MIT |
Apache |
GPL |
Comm. |
Apache |
OTN |
Apache |
|
Supported OS |
Win Linux QNX LynxOS ? BSD Solaris MacOS X HP-UX IRIX AIX OS/2 OpenUnix OpenVMS |
Win Linux QNX
BSD Solaris MacOS X
OpenVMS MVS |
Win NT Linux
BSD Solaris MacOS X HP-UX IRIX AIX OS/2 UnixWare
PTX AS/400 OS/390 |
Win Linux
MacOS X |
Win Linux QNX LynxOS BSD Solaris MacOS X HP-UX IRIX AIX OS/2 UnixWare
Tru64 XFree86 |
Win NT Linux
BSD Solaris MacOS X HP-UX IRIX AIX OS/2 UnixWare
PTX AS/400 OS/390 |
Win NT Linux
Solaris
HP-UX |
Java |
|
Language |
C/C++ |
C/C++ |
C++ Java |
C/C++ |
C++ |
C++ Java |
C/C++ |
Java |
|
Bindings |
Python PHP Perl Tcl/Tk Ruby Delphi |
Python PHP Perl Tcl/Tk Ruby Delphi Kylix |
|
|
|
|
|
|
|
Used By |
Mozilla |
Gnome |
Apache |
|
|
Apache |
|
Apache |
|
|
|
|
|
|
|
|
|
|
|
Library |
Shared |
Shared |
Shar1ed |
Static |
Shared |
Shared |
Static |
|
|
Library Size |
152KB |
897KB |
4077KB |
354KB |
6250KB |
3185KB |
3484KB |
|
|
Thread Safe |
Yes |
Yes |
Yes |
? |
Yes |
Yes |
Yes |
|
|
Latest Version |
v. 1.95.5 |
v. 2.4.30 |
v. 2.2.0 |
v. 1.2.8 |
v. 3.1.1 |
v. 5.0.0 |
v. 9.0.1.0.0 |
|
|
Release Date |
6.09.2002
|
12.12.02
|
07.02.2003
|
12.11.2002
|
13.11.2002 |
28.08.2002 |
22.08.2002 |
|
|
|
|
|
|
|
|
|
|
|
|
XML |
1.0 |
1.0 |
1.0 1.1 Planed |
1.0 |
1.0 |
1.0 1.1 Planed |
1.0 |
1.0 |
|
Encodings |
UTF 8
iconv(with sablotron4) CallBack |
UTF 8/16
ISO8859-1 ASCII
iconv11 |
UTF 8/16 UCS 4 ISO8859-1 ASCII EBCDIC CP-1252 |
UTF 8/16 UCS 2 ISO8859-*
|
UTF 8
ISO8859-* ASCII
CP-* KOI8-R eucJP JIS ShiftJIS eucKR eucTW BIG5
|
UTF 8/16 UCS 4 ISO8859-1 ASCII EBCDIC CP-1252
IBM ICU12 |
UTF 8/16 UCS 2 ISO8859-* ASCII EBCDIC IBM-* KOI8-R eucJP
ShiftJIS
BIG5 GB2312
|
UTF 8/16
ISO8859-1 ASCII |
|
Parser |
SAX Like |
DOM Like |
SAX, DOM |
DOM Like |
SAX, DOM |
SAX, DOM |
SAX, DOM |
SAX, DOM |
|
Namespace |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Validating |
- |
+ |
+ |
+ |
- |
+ |
+ |
+ |
|
DTD |
CallBack |
+ |
+ |
+ |
|
+ |
+ |
+ |
|
XML Schema |
|
Developed |
1.0, 1.1 Planed |
- |
- |
1.0, 1.1 Planed |
1.0 |
old |
|
Validation without reparsing |
|
Yes |
No |
|
|
No |
Yes |
No |
|
SAX 1 |
|
minimal |
+ |
|
+ |
|
+ |
+ |
|
SAX 2 |
Arabica5, CenterPoint |
Arabica5 |
+, Arabica5 |
|
+ |
+, Arabica5 |
Declared in some docs |
+ |
|
DOM L.1 |
Sablotron4, Arabica5, CenterPoint8 |
Gdome2, Arabica5 |
+, Arabica5 |
|
+ |
+, Arabica5 |
+ |
+ |
|
DOM L.2 |
Sablotron4, Arabica5, CenterPoint8 |
Gdome2, Arabica5 |
+, Arabica5 |
|
+ |
+, Arabica5 |
Partly |
+ |
|
DOM L.3 |
CenterPoint8 |
|
Partial |
|
|
partial |
|
planed |
|
DOM Tree Serialization |
Sablotron4, CenterPoint8 |
+ |
DOM Level 3 |
|
+ |
DOM Level 3 |
+ |
+ |
|
XSLT |
Sablotron4 |
Libxslt1 |
Xalan6 |
|
|
Lotus XSL9 |
+ |
+ |
|
EXSLT |
|
Libxslt1 |
Xalan6 |
|
|
Lotus XSL9 |
|
+ |
|
Xpath 1 |
Sablotron4 |
+ |
Partial, Xalan6, Pathan7 |
|
|
Partial, Lotus XSL9 Pathan7 |
+ |
+ |
|
Xpath 2 |
|
|
Pathan7 |
|
|
Pathan7 |
|
|
|
XBase |
|
+ |
|
|
|
|
|
+ ? |
|
XPointer |
|
+ |
|
|
|
|
|
+ ? |
|
XLink |
|
Planed |
|
|
|
|
|
+ ? |
|
XInclude |
|
+ |
|
|
|
|
|
+ ? |
|
Canonical XML |
1.0 |
1.0 |
|
|
|
|
|
Apache XML Security |
|
Signature |
|
XML Security Library3 |
|
|
|
|
|
Apache XML Security |
|
Signature Xpath Filter |
|
XML Security Library3 |
|
|
|
|
|
Apache XML Security |
|
Decryption Transform for XML Signature |
|
Planed in XML Security Library |
|
|
|
|
|
|
|
XML Encryption |
|
XML Security Library3 |
|
|
|
|
|
Apache XML Security |
|
XForms |
|
|
|
|
|
|
|
|
|
Additional Supported Standards |
|
XML Catalog |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Network Clients |
|
FTP, HTTP |
FTP, HTTP |
|
|
FTP, HTTP |
|
FTP, HTTP |
|
SOAP 1.1 |
EasySOAP10 |
|
|
|
|
|
+ ? |
Apache SOAP |
|
SOAP 1.2 |
|
|
|
|
|
|
|
|
|
SOAP Atachment |
|
|
|
|
|
|
|
Apache SOAP |
|
WSDL |
Planed by EasySOAP10 |
|
|
|
|
|
|
|
|
UDDI |
|
|
|
|
|
|
|
+ |
|
ebXML |
|
|
|
|
|
|
|
+ |
|
|
|
|
|
|
|
|
|
|
|
XML GUI |
|
|
|
|
+ |
|
|
|
|
XSD -> Class Generator |
|
|
|
|
|
|
+ |
|
The XSLT C Library for Gnome (http://xmlsoft.org/XSLT/) is distributed under MIT license and claims to support all systems, supported by XML C Library for Gnome.
Gnome DOM Engine (http://gdome2.cs.unibo.it/) is distributed under LGPL license and claims to support all systems, supported by XML C Library for Gnome.
XML Security Library (http://www.aleksey.com/xmlsec/) is distributed under MIT license and requires OpenSSL 0.9.6c or 0.9.7 (prefered).
Sablotron (http://www.gingerall.com/charlie/ga/xml/p_sab.xml) is distributed under GPL and Mozilla Open License 1.1 licenses. Sablotron is written in C++ and depends on expat XML parser.
Arabica (http://www.jezuk.co.uk/cgi-bin/view/arabica) is distributed under BSD license, written in C++ and claims to support Linux, Windows and different Unixes equiped with GNU compiler 3.
Xalan for C++ (http://xml.apache.org/xalan-c/index.html) is distributed under Apache license and known to work on Windows, Linux, Solaris, HP-UX and AIX platforms.
Pathan (http://software.decisionsoft.com/pathanIntro.html) is distributed under BSD style license, written in C++ and known to support Windows, Linux and Solaris platforms.
Center Point XML (http://www.cpointc.com/XML/) is distributed under Netscape Public License and claims to support many platforms, including Windows, Linux, BSD, Solaris, HP-UX, MacOS X. Written in C++.
IBM alphaWorks LotusXSL (http://www.alphaworks.ibm.com/tech/lotusxsl) is IBM shipped version of xalan library.
EasySOAP++ (http://easysoap.sourceforge.net/) is distributed under LGPL license, supports Linux and Windows platforms. And claims to be compatible with different SOAP implementations including, but not limited, Microsoft SOAP toolkit, Microsoft .NET platform, Apache, White Mesa, Phalanx..
iconv (http://www.gnu.org/software/libiconv/) is part of GNU c library and distributed under GPL license.
IBM International Components for Unicode (http://oss.software.ibm.com/developerworks/opensource/icu/project/) is written in pure C unicde 3.2 library, provided under X Open Source license. ICU claims to support Linux, Windows and variety of Unix platforms.
|
|
libxslt |
GDome |
xmlsec |
sablotron |
cslxml |
arabica |
xalan |
Lotus XSL |
pathan |
|---|---|---|---|---|---|---|---|---|---|
|
Author |
Gnome |
Gnome |
Alexey Sanin |
Ginger Alliance |
Connective Software Engineering |
Jez UK |
Apache |
IBM |
Decision Soft |
|
License |
MIT |
LGPL |
MIT |
GPL Mozilla |
Netscape |
BSD |
Apache |
? |
BSD |
|
Requirements |
LibXML2 |
LibXML2 |
LibXML2 OpenSSL |
Expat |
Expat |
Expat LibXML Xerces |
Xerces |
xml4c |
Xerces |
|
Language |
C/C++ |
C/C++ |
C/C++ |
C++ |
C++ |
C++ |
C++ Java |
C++ Java |
C++ Java |
|
Bindings |
Perl Ruby Python
Tcl/Tk Pascal
|
Perl Ruby
Caml |
|
Perl Ruby Python Php Tcl/Tk Pascal Ada Erlang |
|
|
|
|
Perl |
|
Used By |
Gnome |
Gnome |
|
mozilla |
|
|
Apache |
Apache |
|
|
|
|
|
|
|
|
|
|
|
|
|
Library |
Shared |
Shared |
Shared |
Shared |
Static |
Static |
Shared |
Shared |
shared |
|
Library Size |
764 KB |
232 KB |
242 KB |
760 KB |
962 KB |
132 KB |
3.3 MB |
? |
991 KB |
|
Thread Safe |
Yes |
? |
? |
Partly1 |
Yes |
? |
Yes |
Yes |
Yes |
|
Latest Version |
1.0.24 |
0.7.2 |
0.0.12 |
0.97.0 |
2.1.3
|
Sept02 |
1.4
|
? |
1.1 2.0 (CVS) |
|
Release Date |
14.01.03 |
20.11.02 |
27.01.03 |
30.12.02 |
28.11.02 |
19.09.02 |
12.09.02
|
? |
18.09.02 |
Expect DOM Modification part
Benchmark Setup
Hardware
Intel Pentium IV 2200 (22x100) MHZ (Nothwood)
Intel D850MV motherboard ( i850E + ICH2)
4 x Samsung MR16R 256 MB PC800 Rambus DRAM
IBM GXP120 60GB hard drive
Software
DarkLin II.1.3 (Mandrake Based) Single User Mode
Kernel 2.4.21 pre3
GNU C Library 2.3.1
GNU C Compiler 3.2.1
Intel C++ Compiler 7.0
J2SE 1.4.1 + XML Pack Summer
Libraries
Expat 1.95.5
Sablotron 0.97.0
Arabica 02.09.2002
CenterPoint XML 2.1.3
Gnome XML Library 2.4.30
Gnome XML DOM Library 0.7.2
Gnome XSLT Library 1.0.24
XML Security Library 0.0.12
Xerces for C++ 2.1.0
Xalan for C++ 1.4
IBM XML4C 5.0.0
LTG RXP Parser 1.2.8
Trolltech QT 3.1.0
Oracle XML Developers Kit for C 9.0.1.0.0
Oracle XML Developers Kit for Java 9.2.0.4.0
Apache XML Security 1.0.4
XML Files
XMLGEN - autogenerated simple XML file filled with random values, have 3 levels of deep and very simple XSD schema. Examples and schema can be accessed in XML Benchmark source package.
OPCGEN – autogenerated sequence of OPC(http://www.opcfoundation.org) messages filled with random data. This messages have 1-5 levels of deep and complex xsd schema. There are 15 different type messages wich dramatically differs from each other. Examples and schema can be accessed in XML Benchmark source pakage.
12 MB Resource Description File (RDF) from Dmoz.org
Parsing Benchmarks

Validating Benchmark

DOM Benchmark

XSLT Transformation Benchmark

XML Security Benchmark

Stress Test
Parsers able process 64MB file: expat, arabica (SAX), cslxml (DOM,SAX), libxml (DOM,SAX), oracle (DOM,SAX), QT (SAX), RXP, Xerces (DOM,SAX), xml4c (DOM,SAX)
Parsers able process 128MB file: expat, arabica (SAX), cslxml (DOM,SAX), libxml (SAX), oracle (SAX), QT (SAX), Xerces (SAX), xml4c (SAX)
Parsers able process 256MB file: expat, arabica (SAX), cslxml (SAX), libxml (SAX), oracle (SAX), Xerces (SAX), xml4c (SAX)
Parsers able process 512MB file: Xerces (SAX), xml4c (SAX)
Standards Violations Notes
Oracle have very old schema support and can't work with OPC schema file.
Xerces for C 2.1 don't catch schema implementation (xsi) type violations
Oracle have some problems with serialization XML documents with namespaces