2007-07-12 14:46:45 +00:00
|
|
|
{$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;
|
2007-07-13 22:33:55 +00:00
|
|
|
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
|
|
|
function GetNodeListCount(ANodeList : TDOMNamedNodeMap) : Integer ;overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
2007-07-12 14:46:45 +00:00
|
|
|
procedure ReleaseDomNode(ADomNode : TDOMNode);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
|
|
|
procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
2007-09-02 19:05:47 +00:00
|
|
|
procedure ReleaseDomNode(ADomNode : TDOMNamedNodeMap);overload;{$IFDEF USE_INLINE}inline;{$ENDIF}
|
2007-07-12 14:46:45 +00:00
|
|
|
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;
|
|
|
|
|
2007-09-02 19:05:47 +00:00
|
|
|
function GetNodeListCount(ANodeList : TDOMNodeList) : Integer ;overload;
|
2007-07-12 14:46:45 +00:00
|
|
|
begin
|
|
|
|
Result := ANodeList.Count;
|
|
|
|
end;
|
|
|
|
|
2007-09-02 19:05:47 +00:00
|
|
|
function GetNodeListCount(ANodeList : TDOMNamedNodeMap) : Integer ;overload;
|
2007-07-13 22:33:55 +00:00
|
|
|
begin
|
|
|
|
Result := ANodeList.Length;
|
|
|
|
end;
|
2007-07-12 14:46:45 +00:00
|
|
|
|
2007-09-02 19:05:47 +00:00
|
|
|
procedure ReleaseDomNode(ADomNode : TDOMNode);overload;
|
2007-07-12 14:46:45 +00:00
|
|
|
begin
|
|
|
|
ADomNode.Free();
|
|
|
|
end;
|
|
|
|
|
2007-09-02 19:05:47 +00:00
|
|
|
procedure ReleaseDomNode(ADomNode : TDOMNodeList);overload;
|
2007-07-12 14:46:45 +00:00
|
|
|
begin
|
|
|
|
ADomNode.Release();
|
|
|
|
end;
|
|
|
|
|
2007-09-02 19:05:47 +00:00
|
|
|
procedure ReleaseDomNode(ADomNode : TDOMNamedNodeMap);overload;
|
|
|
|
begin
|
|
|
|
ADomNode.Free();
|
|
|
|
end;
|
|
|
|
|
|
|
|
function CreateDoc() : TXMLDocument ;
|
2007-07-12 14:46:45 +00:00
|
|
|
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.
|