Limagito Filemover Software Blog and News

November 11, 2020

Pascal Script Xml Functions added to Limagito File Mover

Pascal Script Xml Functions added to Limagito File Mover

We added two extra Pascal Script functions in version v2020.11.11.0.

  • Function psXMLGetAttribute(Const aXML, aRootNode, aChildNode, aAttrName: String): String;
  • Function psXMLSetAttribute(Const aXML, aRootNode, aChildNode, aAttrName, aAttrValue: String): String;

These functions allow you to Get and Set Xml Attributes. aRootNode or aChildNode can be empty. We prepared the Pascal Script engine to be ready for other Xml requests users may have. Don’t hesitate to ask for extra Xml features.

We added these functions because we received the following request:

Currently I have different XML-Files which more or less will have static file contents besides that it would be needed to update one field with the current date of the day. Scheduler will be used and set to run every weekday at approx. 23:59:59.  In the files the XML-field document > date need to be updated in date format YYYY-MM-DD.

Example for today (2020-11-11):

<document level=”01-01-xx-xx-xx” date=”2020-11-11″ name=”davinci”>

Rest of the file contents stays unchanged.

 

  • In the following example will change the value of a node attribute. The Source will be a Xml file (WIN as Source).

Limagito File Mover WIN as Source

  • The Destination is Pascal Script. The Script will use these new function and write the adjusted Xml content to a new file.

Limagito File Mover Pascal Script as Destination

  • Don’t forget to adjust the Const ctDest to the path you need the adjusted xml to be saved in.

Var
  iList: Integer;
  tmpDateStr: String;
  tmpList: TStringList;
  tmpPos: Integer;
  tmpXml: String;
Const
  ctDest = 'C:\Test\In\Patrick\Out\';
Begin
  psExitCode:= 0;
  // ... add your code here
  // <!--?xml version="1.0" encoding="ISO-8859-1"?-->
  // 
  // 
  tmpList := TStringList.Create;
  Try
    Try
      // Load Xml File
      psLogWrite(1, '', 'Loading ' + psFilePath + psFileName);
      tmpList.LoadFromFile(psFilePath + psFileName);
      // Prepare Date as String
      tmpDateStr := FormatDateTime('YYYY-MM-DD', Now); // i.e. 2020-11-10
      // Function psXMLGetAttribute(Const aXML, aRootNode, aChildNode, aAttrName): String;
      tmpXml := psXMLGetAttribute(Trim(tmpList.Text), 'document', '', 'date');
      psLogWrite(1, '', 'XML Get Date Attr Value: ' + tmpXML);
      // Function psXMLSetAttribute(Const aXML, aRootNode, aChildNode, aAttrName, aAttrValue: String): String;
      psLogWrite(1, '', 'XML Set Date Attr Valuet ' + tmpDateStr);
      tmpXml := psXMLSetAttribute(Trim(tmpList.Text), 'document', '', 'date', tmpDateStr);
      // Save To File
      // psLogWrite(1, '', 'XML Result: ' + tmpXml);
      tmpList.Text := Trim(tmpXML);
      Try
        tmpList.SaveToFile(ctDest + psFileName);
        psLogWrite(1, '', 'SaveToFile: ' + psFilePath + psFileName + ' Successful');
        // Set Result
        psExitCode:= 1;
      Except
        psLogWrite(1, '', 'SaveToFile:' + psFilePath + psFileName + ' Error');
      End;
    Except
      psLogWrite(1, '', 'LoadFromFile: ' + psFilePath + psFileName + ' Error');
    End;
  Finally
    tmpList.Free;
  End;
End.

 

  • Original Source Xml file contains a Date attribute with value “2018-11-30”:

Limagito File Mover Xml Source example

  • The new Destination Xml file contains the adjusted Date attribute with value “2020-11-11”:

Limagito File Mover Xml Destination Example

  • RunTime log result:

Limagito File Mover Xml RunTime Log

If you need any help with these Pascal Script ‘Xml functions’, please let us know.

Best Regards,

Limagito Team

By Limagito Pascal Script , Share: