You've already forked lazarus-ccr
81 lines
1.9 KiB
ObjectPascal
81 lines
1.9 KiB
ObjectPascal
![]() |
{$INCLUDE wst_global.inc}
|
||
|
unit wst_fpc_xml;
|
||
|
|
||
|
interface
|
||
|
|
||
|
uses
|
||
|
Classes, SysUtils, DOM;
|
||
|
|
||
|
{$INCLUDE wst.inc}
|
||
|
{$INCLUDE wst_delphi.inc}
|
||
|
|
||
|
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
|
||
|
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
procedure ReleaseDomNode(ADomNode : TDOMNode);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
function CreateDoc() : TXMLDocument ;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
function FindNode(ANode : TDOMNode;const ANodeName : string) : TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
|
||
|
function NodeToBuffer(ANode : TDOMNode):string ;
|
||
|
|
||
|
implementation
|
||
|
uses XMLWrite;
|
||
|
|
||
|
function GetNodeItemsCount(const ANode : TDOMNode): Integer;
|
||
|
var
|
||
|
chdLst : TDOMNodeList;
|
||
|
begin
|
||
|
if ANode.HasChildNodes then begin
|
||
|
chdLst := ANode.ChildNodes;
|
||
|
try
|
||
|
Result := chdLst.Count;
|
||
|
finally
|
||
|
chdLst.Release();
|
||
|
end;
|
||
|
end else begin
|
||
|
Result := 0;
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
begin
|
||
|
Result := ANodeList.Count;
|
||
|
end;
|
||
|
|
||
|
|
||
|
procedure ReleaseDomNode(ADomNode : TDOMNode);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
begin
|
||
|
ADomNode.Free();
|
||
|
end;
|
||
|
|
||
|
procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
begin
|
||
|
ADomNode.Release();
|
||
|
end;
|
||
|
|
||
|
function CreateDoc() : TXMLDocument ;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
begin
|
||
|
Result := TXMLDocument.Create();
|
||
|
Result.Encoding := 'UTF-8';
|
||
|
end;
|
||
|
|
||
|
function FindNode(ANode : TDOMNode;const ANodeName : string) : TDOMNode;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
||
|
begin
|
||
|
Result := ANode.FindNode(ANodeName);
|
||
|
end;
|
||
|
|
||
|
function NodeToBuffer(ANode : TDOMNode):string ;
|
||
|
var
|
||
|
locStream : TStringStream;
|
||
|
begin
|
||
|
locStream := TStringStream.Create('');
|
||
|
try
|
||
|
WriteXML(ANode,locStream);
|
||
|
Result := locStream.DataString;
|
||
|
finally
|
||
|
locStream.Free();
|
||
|
end;
|
||
|
end;
|
||
|
|
||
|
end.
|