Easy XML - What's Changed    

[13-08-2017] - Version 7.2.2 Build 1

  • Added: Delphi 10.2 packages have been recompiled with Delphi 10.2.1.
  • Solved: Some minor issues.

[07-05-2017] - Version 7.2.1 Build 11

  • Solved: Processing a XML document with Processing Instructions and/or comments after the closing root element raised an exception.
  • Solved: Some minor issues.

[29-03-2017] - Version 7.2.1 Build 0

  • Added: Delphi 10.2 Tokyo support

[05-02-2017] - Version 7.2.0 Build 50

  • Solved: A few minor issues.

[14-01-2017] - Version 7.2.0 Build 42

  • Solved: An "Unexpected EOF" exception was raised when parsing JSON data which contained string values with the $ character.

[01-01-2017] - Version 7.2.0 Build 37

  • Solved: A few small issues in the serializers and invokers.

[28-08-2016] - Version 7.1.5 Build 9

  • Added: TRwAmazon (in uRwAmazon.pas). This class can be used to authenticate Amazon AWS requests. Note: This functionality also requires EasyCrypt to be installed!
    Code example:
    constructor TFrmMain.Create(AOwner: TComponent);
    begin
      inherited;
      FHTTPClient := TRwWinINetClient.Create(Self);
      FAmazon := TRwAmazon.Create(Self);
      FAmazon.HTTPClient  := FHTTPClient;
      FAmazon.Region      := 'eu-west-1';
      FAmazon.Service     := 'dynamodb';
      FAmazon.AccessKeyID := 'AKIAIOSFODNN7EXAMPLE';
      FAmazon.AccessKey   := 'wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY';
    end;
    
    function TFrmMain.GetRecord: RwJSONString;
    begin
      // Get a record from MyTable where the Keyvalue "00001"
      // == select * from MyTable where KeyFieldName = '00001'
      Result := FHTTPClient.RequestEx(
        httpPOST
        , 'https://dynamodb.eu-west-1.amazonaws.com'
        , '{"TableName":"MyTable","Key":{"KeyFieldName":{"S":"00001"}}}'
        , ' application/x-amz-json-1.0'
        , [TRwHTTPHeader.Create('X-Amz-Target','DynamoDB_20120810.GetItem')]
      );
    end;
    
  • Improved: The AppServer now supports dynamic array function results.
  • Improved: Many small improvements to the AppServer, SOAP and JSON Invoker.
  • Solved: A few small issues in both the XML and JSON serializer.

[01-05-2016] - Version 7.1.5 Build 3

  • Added: Delphi 10.1 Berlin support

[09-04-2016] - Version 7.1.5 Build 1

  • Solved: A few minor issues.

[02-12-2015] - Version 7.1.4 Build 12

  • Added: Both the XML SAX and XML DOM parser can now be used to load JSON documents (as if it were XML).
  • Improved: Single Byte, Dual Byte and Multi Byte codepages are now all handled correctly.
  • Solved: A few minor issues.

[14-09-2015] - Version 7.1.4 Build 1

  • Added: Delphi 10 support
  • Changed: Many changes and fixes in the serializers.

[21-04-2015] - Version 7.1.3 Build 1

  • Added: Delphi XE8 support
  • Solved: A few minor issues.

[19-01-2015] - Version 7.1.2 Build 3

  • Improved: Some improvements in the handling of very large documents.
  • Improved: Many fixes for small issues with both of the HTTP Clients.

[08-09-2014] - Version 7.1.1 Build 17

  • Added: Delphi XE7 support.
  • Added: The TRwWinHTTPClient and the TRwWinInetClient.
  • Solved: Some Serialization issues.
  • Solved: A memory leak in the XPath parser.

[01-07-2014] - Version 7.1.1 Build 10

  • Solved: Parsing XML in MemoryStreams larger than 32MB in size would raise an AV.
  • Solved: Several Serialization issues.

[01-04-2014] - Version 7.1.1 Build 0

  • Added: Delphi XE6 support.
  • Solved: Some Minor Issues.

[01-11-2013] - Version 7.1.0 Build 1

  • Added: Delphi XE5 support.
  • Added: SOAP, REST and JSON support (XML Enterprise only).
  • Changed: The entire serialization framework has been rewritten from the ground up. The new framework is based on the RTTI functionality of Delphi XE2 and newer.

[19-07-2013] - Version 7.0.0 Build 35

  • Solved: In some cases the Element prefixes contained a leading colon. This caused the URI resolving to fail.

[03-06-2013] - Version 7.0.0 Build 27

  • Added: Delphi XE4 support.
  • Solved: An exception was raised when parsing XML files larger than 32 MB using a filestream.

[03-03-2013] - Version 7.0.0 Build 10

  • Added: Full support for Firemonkey V2.

[25-11-2012] - Version 6.2.1 Build 8

  • Improved: The serialization classes haven been rewritten and can now be used to serialize/deserialize to and from both JSON and XML.
  • Changed: The TRwADOSerializer has been renamed to TRwADOConverter
  • Solved: Some minor issues.

[01-10-2012] - Version 6.2.1 Build 4

  • Added Delphi XE3 support.
  • Solved: Some minor issues.

[18-06-2012] - Version 6.1.1 Build 24

  • Solved: The "/" and "/elm/" XPath statements did not return the correct result.
  • Improved: The TRwDOMDocument.UseSchemaInstance is now set to true when a docuemnt is loaded with a rootnode which contains the "https://www.w3.org/2001/XMLSchema-instance" namespace.
  • Added: TRwDOMDocument.AsJSON and TRwDOMDocument.AsFormattedJSON.
    These property can be used to convert an XML document to a JSON document
  • Solved: The specified SelectOptions in XPATH statements were not used in child filters.
  • Solved: Setting the TRwDOMDocument.CaseSensitive did not work correctly.
  • Solved: Some minor issues.

[04-06-2012] - Version 6.1.1 Build 20

  • Improved: Easy XML now uses a new, easier to use, and faster parser.
  • Improved: It's now possible to create complex XPATH and JSONPATH statements.
    eg (XPATH) : //author[last-name = "Bob" and ../price > 50]
    eg (JSONPATH) : $..book[?((@.price<=8.95) || (@.price>=20))]
  • Improved: The various SAX events now contain string arguments instead of pointers to strings.
  • Improved: The TRwDOMElementList.Items[] property now accepts both integer and string index arguments.
    eg: Document.RootNode.Elements[1].NodeValue; or Document.RootNode.Elements['child'].NodeValue;
  • Changed: The soIgnoreNamespace select option has been replaced with soLocalName and soQualifiedName.
    When soLocalName is specified as SelectOption the specified name will be matched against the localname of an element (=soIgnoreNamespace)
    When soQualifiedName is specified as SelectOption the specified name will be matched against the qualifiedname of an element
    When neither is specified the document option (TRwDOMDocument.SelectMatchOption) will be used.
  • Changed: The soCaseInsensitive select option has been replaced with soCaseSensitive and soCaseInsensitive.
    When soCaseSensitive is specified as SelectOption the name matching will be case sensitive.
    When soCaseInsensitive is specified as SelectOption the name matching will be case insensitive.
    When neither is specified the document value (TRwDOMDocument.CaseSensitive) will be used.
  • Added: The default CaseSensitivity can be set using the global "DefaultCaseSensitive" variable.
    The value of this global variable will be used as default for a newly created TRwDOMDocument.
  • Added: The default SelectMatchOption can be set using the global "DefaultSelectMatchOption" variable.
    The value of this global variable will be used as default for a newly created TRwDOMDocument.
  • Added: Many new methods.
  • Changed: uRwXmlParser.pas has been removed. The functions in this unit are placed in uRwXmlUtils.pas.
  • Changed: property TRwDOMNodeList.Item[] renamed to TRwDOMNodeList.Items[].
  • Changed: property TRwDOMElementList.Item[] renamed to TRwDOMElementList.Items[].
  • Changed: property TRwDOMNode.AsXML renamed to TRwDOMNode.XML.
  • Changed: property TRwDOMNode.AsFormattedXML renamed to TRwDOMNode.FormattedXML.
  • Changed: property TRwDOMNode.AsInnerXML renamed to TRwDOMNode.InnerXML.
  • Changed: property TRwDOMNode.AsFormattedInnerXML renamed to TRwDOMNode.FormattedInnerXML.
  • Changed: property TRwDOMDocument.AsXML renamed to TRwDOMDocument.XML.
  • Changed: property TRwDOMElement.ChildElements renamed to TRwDOMElement.Elements.
  • Changed: property TRwDOMElement.GetChildElement renamed to TRwDOMElement.ElementByName.
  • Changed: Method TRwDomElement.AttribNodeByName renamed to TRwDomElement.AttributeByName.
  • Changed: TRwDOMDocument.AddProcessingInstruction has been replaced by the TRwDOMDocument.ProcessingInstruction[] property.
  • Changed: Index operators in XPATH statements are now 0 based instead of 1 based.
    eg: Document/Fields/Field[Value="10"][0] returns the first field with a value of 10.
  • Improved: The various IRwDOM.. interfaces now contain the exact same functionality as the TRwDOM.. classes
  • Solved: Many minor issues

[01-10-2011] - Version 6.1.0 Build 3

  • Added: Delphi XE2 support.
  • Added: JSON Support
  • Solved: Some minor issues

[27-10-2010] - Version 6.0.0 Build 11

  • Added: Delphi XE support
  • Solved: Some minor issues

[06-04-2010] - Version 5.0.0 Build 45

  • Added: A Logviewer component (TRwLogViewer) that can be used in combination with the Rapware logger

[23-03-2010] - Version 5.0.0 Build 43

  • Solved: Some minor issues

[30-11-2009] - Version 5.0.0 Build 29

  • Solved: Some minor issues

[21-09-2009] - Version 5.0.0 Build 27

  • Added: Delphi 2010 support

[29-06-2009] - Version 5.0.0 Build 23

  • Solved: Attribute values are now xml encoded.
  • Solved: Searching using XPath fails if a filter contains a XPath reserved character in the filter.
  • Solved: The soCaseInsensitive flag did not work correctly in the InternalSelectNodes method
  • Solved: Some minor bugs

[27-04-2009] - Version 5.0.0 Build 14

  • Solved: TRwStringList.AsAnsiString now always returns the data in the codepage of the system
  • Added: TRwStringList.AsMBCS property; This property gives access to the stringlist data in the codepage of the stringlist (when using a MBCS).
  • Added: TRwDomElement.Values[] property
  • Added: TRwDomElement.Elements[] property
  • Solved: Some minor bugs

[02-03-2009] - Version 5.0.0 Build 8

  • Solved: Some minor bugs

[08-12-2008] - Version 5.0.0 Build 5

  • Solved: The SAX Parser can now handle VERY large XML files
  • Solved: Some minor bugs

[21-09-2008] - Version 5.0.0 Build 3

  • Solved: Some minor bugs

[26-08-2008] - Version 5.0.0 Build 2

  • Added: Delphi 2009 support
  • Changed: The Eaxy XML core has been rewritten.
  • Improved: Speed, XPath, Variant support, Unicode support, Namespace support and a lot more.
  • Changed: Delphi 5 and 6 are no longer supported.

[22-04-2007] - Version 3.5.3 Build 16

  • Added: Delphi 2007 support
  • Solved: Some minor reported bugs

[25-07-2006] - Version 3.5.0 Build 12

  • Changed: The W3C XML DOM component has been replaced by a component that implements the Borland DOM interfaces.
  • Added: The possibility to use the XML DOM component "class based", instead of only "interface based"
  • Added: Basic XPath support.

[12-05-2003] - Version 1.0.2 Build 2

  • Changed: We replaced our TRwXmlMemo with our new TRwCodeEdit.

[18-03-2003] - Version 1.0.1 Build 4

  • Solved: The CData element are now CDATA elements (all uppercase)
  • Solved: Improved decimal support in both dataset serializers
  • Added: Support for large (var)chars (>256 characters) in both dataset serializers
  • Improved: The SAX parser is now even faster
  • Solved: Some minor issues with the XMLDOM

[08-11-2002] - Version 1.0.0 Build 7

  • Solved: The dRwEasyXml.bpl raised an error when it was loaded into Delphi.

[02-11-2002] - Version 1.0.0 Build 6