Files
lazarus-ccr/wst/trunk/wst_fpc_xml.pas
inoussa 5ce9841611 Delphi server side support ( binary, soap, xmlrpc ):
- the Indy http_server compile and works
 - for xml, the Delphi xmldom unit as used ( tested with msxml )

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@213 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2007-07-13 22:33:55 +00:00

86 lines
2.2 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 ;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
function GetNodeListCount(ANodeList : TDOMNamedNodeMap) : Integer ;overload;{$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 ;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := ANodeList.Count;
end;
function GetNodeListCount(ANodeList : TDOMNamedNodeMap) : Integer ;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
begin
Result := ANodeList.Length;
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.