Skip to content
Delphi header translation for Microsoft XmlLite
Branch: master
Clone or download
Pull request Compare This branch is 2 commits ahead, 1 commit behind dheijl:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
MSDN
Package
Samples
.gitignore
LICENSE
README.md
XmlLite.pas

README.md

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.

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;

procedure CombineXmlFiles(const FileName: string; TempXmlFileArray: StringArray);
var
  _IXMLWriter : IXMLWriter;
  iCounter: Integer;
begin
  _IXMLWriter := CreateXmlFileWriter(FileName);

  _IXMLWriter.SetProperty(XmlWriterProperty_Indent, LongInt(True));

  _IXMLWriter.WriteStartDocument(XmlStandalone_Omit);
  _IXMLWriter.WriteStartElement(nil, PWideChar('RootNodeName'), nil);

  for iCounter := 0 to High(TempXmlFileArray) do
    AppendFile(TempXmlFileArray[iCounter], _IXMLWriter);

  _IXMLWriter.WriteEndElement;
  _IXMLWriter.WriteEndDocument;
  _IXMLWriter.Flush;
end;
You can’t perform that action at this time.