Overview
FastInfoset - special format developed by Sun, it defines the rules for use of W3C XML Infoset in the binary form. Another name for FastInfoset - binary XML or Zip-XML.
FastInfoset provides a more compact and quick work with the W3C XML Infoset structure rather than a textual representation. Binary coding can increase up to 10 times the speed of parsing/serialization XML data.
Standard of the format and structure
FastInfoset is an open standard that has been published as an ITU-T Recommendation and ISO/IEC International Standard (ITU-T Recommendation X.891 (2005) | ISO/IEC 24824-1:2007). This standard specifies a binary encoding for the W3C XML Information Set that is designed to improve the efficiency of the text XML encoding by producing a more compact representation at a higher transaction rate.
Structure of FastInfoset is a binary stream in which following XML primitives - elements, attributes, text, CDATA section are encoded by separate bytes of data. String information is placed to the dictionary and then used indexes from this dictionary.
Transfer images, videos, audio tracks through FastInfoset
FastInfoset allows you to store a continuous pieces of data as it is, except the transformation to the text representation such as base64. This fact has a very good effect on the final size of the file and the speed of the subsequent analysis. There is no limit for the size of binary data transmitted through FastInfoset. The pieces of data of any size parsed with the same speed.
Many platforms - one standard
FastInfoset is a cross-platform standard. This means that you can use it on Windows, Linux, Mac OSX and any managed platforms - .NET and Java. Many applications already use this format for the increase the speed of processing XML. For instance well-known - Sun GlassFish, BEA WebLogic, Java SE, JBoss Application Server, TMax Soft JEUS, Apache Axis.
QtitanFastInfoset - Implementation for Qt/C++
The implementation is completely written in Qt/C++, and 100% compatible with other implementations of FastInfoset. Using C++ provides additional winnings in speed. As a programming interface we use analog of progressive QXmlStreamReader/QXmlStreamWriter - FastInfosetStreamReader/FastInfosetStreamWriter.