Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

Delphi-XmlLite

Delphi header translation for Microsoft XmlLite

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

Delphi-XmlLite

Header translation for Microsoft XmlLite

Note: This is a minimal translation, some parts were not implemented and most are untested.

Sample code taken from production. We use this to generate very large (>1GB) Xml files from an array of temporary files.

pascal
procedure AppendFile(const FileName: string; _IXMLWriter: IXMLWriter);
var
  _IXMLReader: IXMLReader;
  NodeType: Integer;
  LocalName: PWideChar;
  LocalNameLen: LongWord;
begin
  _IXMLReader := CreateXmlFileReader(FileName);
  while not _IXMLReader.IsEOF do
  begin
    _IXMLReader.GetLocalName(LocalName, LocalNameLen);
    if (LocalName = 'SecondLevelNodeName') then
      _IXMLWriter.WriteNode(_IXMLReader, True)
    else
      _IXMLReader.Read(NodeType);
  end;
end;
pascal
procedure CombineXmlFiles(const FileName: string; TempXmlFileArray: StringArray);
var
  _IXMLWriter : IXMLWriter;
  iCounter: Integer;
begin
  _IXMLWriter := CreateXmlFileWriter(FileName);
pascal
_IXMLWriter.SetProperty(XmlWriterProperty_Indent, LongInt(True));
pascal
_IXMLWriter.WriteStartDocument(XmlStandalone_Omit);
_IXMLWriter.WriteStartElement(nil, PWideChar('RootNodeName'), nil);
pascal
for iCounter := 0 to High(TempXmlFileArray) do
  AppendFile(TempXmlFileArray[iCounter], _IXMLWriter);
pascal
_IXMLWriter.WriteEndElement;
_IXMLWriter.WriteEndDocument;
_IXMLWriter.Flush;
pascal
end;