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/C++/Java (http://otn.oracle.com/tech/xml/xdk/)
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 |
128KB |
984KB |
3440KB |
354KB |
7033KB |
3185KB |
4328KB |
|
|
Thread Safe |
Yes |
Yes |
Yes |
? |
Yes |
Yes |
Yes |
|
|
Latest Version |
v. 1.95.6 |
v. 2.6.5 |
v. 2.4.0 |
v. 1.2.8 |
v. 3.3.0 |
v. 5.4.0 |
v. 9.2.0.6.0 |
|
|
Release Date |
28.01.2003
|
25.01.2004
|
02.12.2003
|
12.11.2002
|
04.02.2004
|
28.08.2002 |
23.10.2003
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
1.0 Mainly
|
1.0, 1.1 Planed |
- |
- |
1.0, 1.1 Planed |
1.0 |
+ |
|
Relax NG |
|
+ |
|
|
|
|
|
|
|
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 |
+ |
+ |
|
DOM L.3 |
CenterPoint8 |
|
Partial |
|
|
Partial |
Java Only |
planed |
|
DOM Tree Serialization |
Sablotron4, CenterPoint8 |
+ |
DOM Level 3 |
|
+ |
DOM Level 3 |
+ |
+ |
|
XSLT |
Sablotron4 |
Libxslt1 |
Xalan6 |
|
|
Lotus XSL9 |
+ |
+ |
|
EXSLT |
|
Libxslt1 |
Xalan6 |
|
|
Lotus XSL9 |
|
+ |
|
XSL-FO |
|
Xmlroff |
|
|
|
|
|
|
|
Xpath 1 |
Sablotron4 |
+ |
Partial, Xalan6, Pathan7 |
|
|
Partial, Lotus XSL9 Pathan7 |
+ |
+ |
|
Xpath 2 |
|
|
Pathan7 |
|
|
Pathan7 |
Java Only |
|
|
XBase |
|
+ |
|
|
|
|
|
+ ? |
|
XPointer |
|
+ |
|
|
|
|
|
+ ? |
|
XLink |
|
Planed |
|
|
|
|
|
+ ? |
|
XInclude |
|
+ |
|
|
|
|
|
+ ? |
|
Canonical XML |
1.0 |
1.0 |
|
|
|
|
|
Apache XML Security |
|
Signature |
|
XML Security Library3 |
Apache XML Security13 |
|
|
|
|
Apache XML Security |
|
Signature Xpath Filter |
|
XML Security Library3 |
|
|
|
|
|
Apache XML Security |
|
Decryption Transform for XML Signature |
|
Planed in XML Security Library3 |
|
|
|
|
|
|
|
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/icu/) 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.
Apache XML Security for C++ (http://xml.apache.org/security/index.html) is distributed under Apache license and known to work on Windows, Linux, Solaris, HP-UX and AIX platforms.
|
|
libxslt |
GDome |
xmlsec |
sablotron |
cslxml |
arabica |
xalan |
XML Security |
pathan |
|---|---|---|---|---|---|---|---|---|---|
|
Author |
Gnome |
Gnome |
Alexey Sanin |
Ginger Alliance |
Connective Software Engineering |
Jez UK |
Apache |
Apache |
Decision Soft |
|
License |
MIT |
LGPL |
MIT |
GPL Mozilla |
Netscape |
BSD |
Apache |
Apache |
BSD |
|
Requirements |
LibXML2 |
LibXML2 |
LibXML2 OpenSSL |
Expat |
Expat |
Expat LibXML Xerces |
Xerces |
Xerces Xalan |
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 |
Gnome |
mozilla |
|
|
Apache |
Apache |
|
|
|
|
|
|
|
|
|
|
|
|
|
Library |
Shared |
Shared |
Shared |
Shared |
Static |
Static |
Shared |
Shared |
shared |
|
Library Size |
255 KB |
225 KB |
317 KB |
805 KB |
962 KB |
76 KB |
3.3 MB |
345 KB |
991 KB |
|
Thread Safe |
Yes |
? |
? |
Partly1 |
Yes |
? |
Yes |
Yes |
Yes |
|
Latest Version |
1.1.2
|
0.8.1 |
1.2.4
|
1.0.1 |
2.1.7
|
Jan04 |
1.7
|
1.0.0 |
1.2r2 2.0alpha |
|
Release Date |
24.12.03
|
10.05.03
|
27.01.04
|
25.11.03
|
15.05.03
|
03.01.04
|
18.01.04
|
10.08.03
|
04.09.03
|
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 III (Mandrake 9.2 Based) Single User Mode
Kernel 2.4.22
GNU C Library 2.3.2
GNU C Compiler 3.3.1
Intel C++ Compiler 8.0
J2SE 1.4.2 + JAXP 1.2
Libraries
Expat 1.95.6
Sablotron 1.0.1
Arabica Jan04
CenterPoint XML 2.1.7
Gnome XML Library 2.6.5
Gnome XML DOM Library 0.8.1
Gnome XSLT Library 1.1.2
XML Security Library 1.2.4
Xerces for C++ 2.4.0
Xalan for C++ 1.7
LTG RXP Parser 1.2.8
Trolltech QT 3.3.0
Oracle XML Developers Kit for C 9.2.0.6.0
Oracle XML Developers Kit for Java 9.2.0.6.0
Apache XML Security for C++ 08.02.2004
Apache XML Security for Java 1.0.5D2
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 16 different type messages which dramatically differs from each other. Examples and schema can be accessed in XML Benchmark source package.
12 MB Resource Description File (RDF) from Dmoz.org
1 MB Library Catalog file

Parsing
Benchmarks
Validation Benchmark

XSLT Transformation Benchmark

DOM 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 bugs in schema verification and can drop core while validating non-valid documents.
Gnome XML 2.6.5 library have problems with validation of xsd:QName attributes
Xerces for C 2.4 don't catch schema implementation (xsi) type violations