OmniXML based storage suited for easy XML data management, data storage and data interchange beetween systems. Main features are:

  • flexibility and unlimited storage depth
  • ease of use (enumerations, blind access…)
  • can store any data type including binary data
  • support for custom data filters (compression, encryption)
  • support for custom document filters (compression, encryption)
  • support for data adapters (TDataSet…)
  • build in encryption and compression support
  • build in support for handling collections
  • basic XPath support for searching
  • easy to use XML builder
Cromis SimpleStorage download: Version 1.6.5 (23.09.2010)
Cromis SimpleStorage download: Version 1.7.7 (11.07.2012)
You will need OmniXML if you want to use SimpleStorage. You can get it here.

To demo bellow shows the power of SimpleStorage. It stores and compresses a jpeg image and then retrieves that same image back from the storage.
If you have trouble using the code or have any other questions, please contact me directly using the “Contact” page.

  MS := TMemoryStream.Create;
  try
    Jpeg.SaveToStream(MS);
    MS.Position := 0;
 
    SrcStorage := CreateStorage('BinaryStorage');
    SrcStorage.Ensure('Image').Filter('gzip').AsBinary.LoadFromStream(MS);
  finally
    MS.Free;
  end;
  Jpeg := TJPEGImage.Create;
  try
    Jpeg.LoadFromStream(SrcStorage.Get('Image').Filter('gzip').AsBinary.Stream);
  finally
    Jpeg.Free;
  end;

Change Log

  • 1.7.7
    • StorageFromXMLdocument and TSimpleStorage.LoadFromXMLDocument added
    • XMLDocument for ISimpleStorage allows acces to underlying document object
    • Added LastLoadStatus to allow the handling of XML parsing errors
  • 1.7.6
    • Fixed Merge procedure
  • 1.7.5
    • AppendAllElements now assigns child nodes before the recursion to keep node order
  • 1.7.4
    • TAttributes.Exists does not raise exception if no XML node is present (returns false)
  • 1.7.3
    • TElement.Assign and TElement.Merge now correctly handle CData
  • 1.7.2
    • Filter chaining code is now consistent
    • Do not directly work on filter input streams
  • 1.7.1
    • ICustomFilterData added to allow one filter syntax for both elements and documents
    • renamed some of the internally used interfaces to have a clearer structure
  • 1.7.0 (warning: breaking change)
    • Added IDocumentFilter as a base for document wide filtering
    • Added IDocumentFilterChain as a means to chain the multiple filters together
    • Added IStorageFilter to allow doument filtering through ISimpleStorage interface
    • IEncryptedSimpleStorage now inherits from IDocumentFilter
    • Added ICompressedStorage document filter
    • IDocuments now uses FilterChain to possibly filter the XML documents
  • 1.6.5
    • Overloaded all functions that accept XPath. Now it is possible to use path in the form of an array of strings. It is easier to use constants this way
    • Included StorageBuilder as part of SimpleStorage
    • Was forced to expose XMLNode as Element property
    • Fixed Element.Remove inconsistencies
    • Remove can compact empty parent nodes
    • SaveChanges added to IDocument in Collection
  • 1.6.2
    • Added GetAttr / EnsureAttr function to simplify the attribute manipulation
  • 1.6.1
    • Added IDocumentsCollection interface for easy XML document searches
  • 1.5.1
    • Support for encryption based on XTEA algorithm