|
- unit uutlXmlHelper;
-
- {$mode objfpc}{$H+}
-
- { *************************** EXAMPLE *********************************
- doc := TXMLDocument.Create;
- try
- root := doc.CreateElement('root');
- doc.AppendChild(root);
- with TutlXmlHelper.Create(root) do begin
- SetAttribString('test', 'blubb');
- SetAttribInt('new', 123);
- with TutlXmlHelper.Create(AppendNode('test')) do begin
- SetString('child node :)');
- end;
- with TutlXmlHelper.Create(AppendNode('test')) do begin
- SetString('another child node :)');
- end;
- end;
- WriteXMLFile(doc, 'save.xml');
- finally
- FreeAndNil(doc);
- end; }
-
- interface
-
- uses
- Classes, SysUtils, DOM;
-
- type
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- IutlNodeEnumerator = interface(specialize IEnumerator<TDOMElement>)
- ['{59F90C67-8A0B-48AC-8A49-D39317A07FE2}']
- function GetEnumerator: IutlNodeEnumerator;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- IutlXmlHelper = interface(IUnknown)
- ['{C489CEC8-BAD6-4E03-A554-9DF31E84CDBB}']
-
- // simple properties
- function GetElement: TDOMElement;
-
- property Node: TDOMElement read GetElement;
-
- // set value of current node
- procedure SetString (const aValue: String); overload;
- procedure SetString (const aValue: WideString); overload;
- procedure SetString (const aValue: UnicodeString); overload;
- procedure SetInt (const aValue: Integer);
- procedure SetFloat (const aValue: Double);
- procedure SetBool (const aValue: Boolean);
-
- // get value of current node
- function GetString (const aDefault: String): String;
- function GetStringW (const aDefault: WideString): WideString;
- function GetStringU (const aDefault: UnicodeString): UnicodeString;
- function GetInt (const aDefault: Int64): Int64;
- function GetFloat (const aDefault: Double): Double;
- function GetBool (const aDefault: Boolean): Boolean;
-
- // set value of attribute
- procedure SetAttribString (const aName: DOMString; const aValue: String); overload;
- procedure SetAttribString (const aName: DOMString; const aValue: WideString); overload;
- procedure SetAttribString (const aName: DOMString; const aValue: UnicodeString); overload;
- procedure SetAttribInt (const aName: DOMString; const aValue: Integer);
- procedure SetAttribFloat (const aName: DOMString; const aValue: Double);
- procedure SetAttribBool (const aName: DOMString; const aValue: Boolean);
-
- // get value of attribute
- function GetAttribString (const aName: DOMString; const aDefault: String): String;
- function GetAttribStringW (const aName: DOMString; const aDefault: WideString): WideString;
- function GetAttribStringU (const aName: DOMString; const aDefault: UnicodeString): UnicodeString;
- function GetAttribInt (const aName: DOMString; const aDefault: Int64): Int64;
- function GetAttribFloat (const aName: DOMString; const aDefault: Double): Double;
- function GetAttribBool (const aName: DOMString; const aDefault: Boolean): Boolean;
-
- // node operations
- function Nodes (const aName: DOMString): IutlNodeEnumerator;
- function PrependNode (const aName: DOMString): TDOMElement;
- function AppendNode (const aName: DOMString): TDOMElement;
- procedure PrependText (const aText: DOMString);
- procedure AppendText (const aText: DOMString);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TutlNodeEnumerator = class(TInterfacedObject, IutlNodeEnumerator)
- private
- fIndex: Integer;
- fName: DOMString;
- fParent: TDOMElement;
-
- public { INodeEnumerator }
- function GetEnumerator: IutlNodeEnumerator;
- function GetCurrent: TDOMElement;
- function MoveNext: Boolean;
- procedure Reset;
-
- public
- constructor Create(const aParent: TDOMElement; const aName: DOMString);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TutlXmlHelper = class(TInterfacedObject, IutlXmlHelper)
- private
- fElement: TDOMElement;
-
- public { IutlXmlHelper }
- function GetElement: TDOMElement;
-
- // set value of current node
- procedure SetString (const aValue: String); overload;
- procedure SetString (const aValue: WideString); overload;
- procedure SetString (const aValue: UnicodeString); overload;
- procedure SetInt (const aValue: Integer);
- procedure SetFloat (const aValue: Double);
- procedure SetBool (const aValue: Boolean);
-
- // get value of current node
- function GetString (const aDefault: String): String;
- function GetStringW (const aDefault: WideString): WideString;
- function GetStringU (const aDefault: UnicodeString): UnicodeString;
- function GetInt (const aDefault: Int64): Int64;
- function GetFloat (const aDefault: Double): Double;
- function GetBool (const aDefault: Boolean): Boolean;
-
- // set value of attribute
- procedure SetAttribString (const aName: DOMString; const aValue: String); overload;
- procedure SetAttribString (const aName: DOMString; const aValue: WideString); overload;
- procedure SetAttribString (const aName: DOMString; const aValue: UnicodeString); overload;
- procedure SetAttribInt (const aName: DOMString; const aValue: Integer);
- procedure SetAttribFloat (const aName: DOMString; const aValue: Double);
- procedure SetAttribBool (const aName: DOMString; const aValue: Boolean);
-
- // get value of attribute
- function GetAttribString (const aName: DOMString; const aDefault: String): String;
- function GetAttribStringW (const aName: DOMString; const aDefault: WideString): WideString;
- function GetAttribStringU (const aName: DOMString; const aDefault: UnicodeString): UnicodeString;
- function GetAttribInt (const aName: DOMString; const aDefault: Int64): Int64;
- function GetAttribFloat (const aName: DOMString; const aDefault: Double): Double;
- function GetAttribBool (const aName: DOMString; const aDefault: Boolean): Boolean;
-
- // node operations
- function Nodes (const aName: DOMString): IutlNodeEnumerator;
- function PrependNode (const aName: DOMString): TDOMElement;
- function AppendNode (const aName: DOMString): TDOMElement;
- procedure PrependText (const aText: DOMString);
- procedure AppendText (const aText: DOMString);
-
- private
- {%H-}constructor Create; reintroduce;
- {%H-}constructor Create(const aElement: TDOMElement); reintroduce;
-
- public
- class function Create(const aElement: TDOMElement): IutlXmlHelper;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TutlXmlHelperImpl = class
- public
- class function SetString (const aNode: TDOMNode; const aValue: String): TDOMNode; overload;
- class function SetString (const aNode: TDOMNode; const aValue: WideString): TDOMNode; overload;
- class function SetString (const aNode: TDOMNode; const aValue: UnicodeString): TDOMNode; overload;
- class function SetInt (const aNode: TDOMNode; const aValue: Integer): TDOMNode;
- class function SetFloat (const aNode: TDOMNode; const aValue: Double): TDOMNode;
- class function SetBool (const aNode: TDOMNode; const aValue: Boolean): TDOMNode;
-
- class function GetString (const aNode: TDOMNode; const aDefault: String): String;
- class function GetStringW (const aNode: TDOMNode; const aDefault: WideString): WideString;
- class function GetStringU (const aNode: TDOMNode; const aDefault: UnicodeString): UnicodeString;
- class function GetInt (const aNode: TDOMNode; const aDefault: Int64): Int64;
- class function GetFloat (const aNode: TDOMNode; const aDefault: Double): Double;
- class function GetBool (const aNode: TDOMNode; const aDefault: Boolean): Boolean;
-
- class function Nodes (const aElement: TDOMElement; const aName: DOMString = ''): IutlNodeEnumerator;
- class function PrependNode (const aElement: TDOMElement; const aName: DOMString): TDOMElement;
- class function AppendNode (const aElement: TDOMElement; const aName: DOMString): TDOMElement;
- class procedure PrependText (const aElement: TDOMElement; const aText: DOMString);
- class procedure AppendText (const aElement: TDOMElement; const aText: DOMString);
- end;
-
- implementation
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlNodeEnumerator/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlNodeEnumerator.GetEnumerator: IutlNodeEnumerator;
- begin
- result := self;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlNodeEnumerator.GetCurrent: TDOMElement;
- begin
- result := (fParent.ChildNodes[fIndex] as TDOMElement);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlNodeEnumerator.MoveNext: Boolean;
- begin
- repeat
- inc(fIndex)
- until (fIndex >= fParent.ChildNodes.Count)
- or ( (fName = '')
- or (fName = fParent.ChildNodes[fIndex].NodeName));
- result := (fIndex < fParent.ChildNodes.Count);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlNodeEnumerator.Reset;
- begin
- fIndex := -1;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TutlNodeEnumerator.Create(const aParent: TDOMElement; const aName: DOMString);
- begin
- inherited Create;
- fParent := aParent;
- fName := aName;
- fIndex := -1;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlXmlHelper//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetElement: TDOMElement;
- begin
- result := fElement;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetString(const aValue: String);
- begin
- TutlXmlHelperImpl.SetString(fElement, aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetString(const aValue: WideString);
- begin
- TutlXmlHelperImpl.SetString(fElement, aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetString(const aValue: UnicodeString);
- begin
- TutlXmlHelperImpl.SetString(fElement, aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetInt(const aValue: Integer);
- begin
- TutlXmlHelperImpl.SetInt(fElement, aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetFloat(const aValue: Double);
- begin
- TutlXmlHelperImpl.SetFloat(fElement, aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetBool(const aValue: Boolean);
- begin
- TutlXmlHelperImpl.SetBool(fElement, aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetString(const aDefault: String): String;
- begin
- result := TutlXmlHelperImpl.GetString(fElement, aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetStringW(const aDefault: WideString): WideString;
- begin
- result := TutlXmlHelperImpl.GetStringW(fElement, aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetStringU(const aDefault: UnicodeString): UnicodeString;
- begin
- result := TutlXmlHelperImpl.GetStringU(fElement, aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetInt(const aDefault: Int64): Int64;
- begin
- result := TutlXmlHelperImpl.GetInt(fElement, aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetFloat(const aDefault: Double): Double;
- begin
- result := TutlXmlHelperImpl.GetFloat(fElement, aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetBool(const aDefault: Boolean): Boolean;
- begin
- result := TutlXmlHelperImpl.GetBool(fElement, aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetAttribString(const aName: DOMString; const aValue: String);
- begin
- fElement.SetAttributeNode(TutlXmlHelperImpl.SetString(
- fElement.OwnerDocument.CreateAttribute(aName),
- aValue) as TDOMAttr);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetAttribString(const aName: DOMString; const aValue: WideString);
- begin
- fElement.SetAttributeNode(TutlXmlHelperImpl.SetString(
- fElement.OwnerDocument.CreateAttribute(aName),
- aValue) as TDOMAttr);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetAttribString(const aName: DOMString; const aValue: UnicodeString);
- begin
- fElement.SetAttributeNode(TutlXmlHelperImpl.SetString(
- fElement.OwnerDocument.CreateAttribute(aName),
- aValue) as TDOMAttr);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetAttribInt(const aName: DOMString; const aValue: Integer);
- begin
- fElement.SetAttributeNode(TutlXmlHelperImpl.SetInt(
- fElement.OwnerDocument.CreateAttribute(aName),
- aValue) as TDOMAttr);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetAttribFloat(const aName: DOMString; const aValue: Double);
- begin
- fElement.SetAttributeNode(TutlXmlHelperImpl.SetFloat(
- fElement.OwnerDocument.CreateAttribute(aName),
- aValue) as TDOMAttr);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.SetAttribBool(const aName: DOMString; const aValue: Boolean);
- begin
- fElement.SetAttributeNode(TutlXmlHelperImpl.SetBool(
- fElement.OwnerDocument.CreateAttribute(aName),
- aValue) as TDOMAttr);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetAttribString(const aName: DOMString; const aDefault: String): String;
- begin
- result := TutlXmlHelperImpl.GetString(fElement.Attributes.GetNamedItem(aName), aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetAttribStringW(const aName: DOMString; const aDefault: WideString): WideString;
- begin
- result := TutlXmlHelperImpl.GetStringW(fElement.Attributes.GetNamedItem(aName), aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetAttribStringU(const aName: DOMString; const aDefault: UnicodeString): UnicodeString;
- begin
- result := TutlXmlHelperImpl.GetStringU(fElement.Attributes.GetNamedItem(aName), aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetAttribInt(const aName: DOMString; const aDefault: Int64): Int64;
- begin
- result := TutlXmlHelperImpl.GetInt(fElement.Attributes.GetNamedItem(aName), aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetAttribFloat(const aName: DOMString; const aDefault: Double): Double;
- begin
- result := TutlXmlHelperImpl.GetFloat(fElement.Attributes.GetNamedItem(aName), aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.GetAttribBool(const aName: DOMString; const aDefault: Boolean): Boolean;
- begin
- result := TutlXmlHelperImpl.GetBool(fElement.Attributes.GetNamedItem(aName), aDefault);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.Nodes(const aName: DOMString): IutlNodeEnumerator;
- begin
- result := TutlXmlHelperImpl.Nodes(fElement, aName);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.PrependNode(const aName: DOMString): TDOMElement;
- begin
- result := TutlXmlHelperImpl.PrependNode(fElement, aName);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TutlXmlHelper.AppendNode(const aName: DOMString): TDOMElement;
- begin
- result := TutlXmlHelperImpl.AppendNode(fElement, aName);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.PrependText(const aText: DOMString);
- begin
- TutlXmlHelperImpl.PrependText(fElement, aText);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TutlXmlHelper.AppendText(const aText: DOMString);
- begin
- TutlXmlHelperImpl.AppendText(fElement, aText);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TutlXmlHelper.Create;
- begin
- inherited Create;
- fElement := nil;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TutlXmlHelper.Create(const aElement: TDOMElement);
- begin
- Create;
- fElement := aElement;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelper.Create(const aElement: TDOMElement): IutlXmlHelper;
- begin
- result := TutlXmlHelper.Create(aElement);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TutlXmlHelperImpl//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.SetString(const aNode: TDOMNode; const aValue: String): TDOMNode;
- begin
- result := aNode;
- if Assigned(aNode) then
- aNode.TextContent := DOMString(aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.SetString(const aNode: TDOMNode; const aValue: WideString): TDOMNode;
- begin
- result := aNode;
- if Assigned(aNode) then
- aNode.TextContent := DOMString(aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.SetString(const aNode: TDOMNode; const aValue: UnicodeString): TDOMNode;
- begin
- result := aNode;
- if Assigned(aNode) then
- aNode.TextContent := DOMString(aValue);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.SetInt(const aNode: TDOMNode; const aValue: Integer): TDOMNode;
- begin
- result := aNode;
- if Assigned(aNode) then
- aNode.TextContent := DOMString(IntToStr(aValue));
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.SetFloat(const aNode: TDOMNode; const aValue: Double): TDOMNode;
- begin
- result := aNode;
- if Assigned(aNode) then
- aNode.TextContent := DOMString(FloatToStr(aValue));
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.SetBool(const aNode: TDOMNode; const aValue: Boolean): TDOMNode;
- begin
- result := aNode;
- if Assigned(aNode) then begin
- if aValue
- then aNode.TextContent := 'true'
- else aNode.TextContent := 'false';
- end;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.GetString(const aNode: TDOMNode; const aDefault: String): String;
- begin
- if not Assigned(aNode)
- or ( not aNode.HasChildNodes
- and not (aNode is TDOMText))
- then result := aDefault
- else result := String(aNode.TextContent);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.GetStringW(const aNode: TDOMNode; const aDefault: WideString): WideString;
- begin
- if not Assigned(aNode)
- or ( not aNode.HasChildNodes
- and not (aNode is TDOMText))
- then result := aDefault
- else result := WideString(aNode.TextContent);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.GetStringU(const aNode: TDOMNode; const aDefault: UnicodeString): UnicodeString;
- begin
- if not Assigned(aNode)
- or ( not aNode.HasChildNodes
- and not (aNode is TDOMText))
- then result := aDefault
- else result := UnicodeString(aNode.TextContent);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.GetInt(const aNode: TDOMNode; const aDefault: Int64): Int64;
- begin
- if not Assigned(aNode)
- or ( not aNode.HasChildNodes
- and not (aNode is TDOMText))
- or not TryStrToInt64(String(aNode.TextContent), result) then
- result := aDefault;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.GetFloat(const aNode: TDOMNode; const aDefault: Double): Double;
- begin
- if not Assigned(aNode)
- or ( not aNode.HasChildNodes
- and not (aNode is TDOMText))
- or not TryStrToFloat(String(aNode.TextContent), result) then
- result := aDefault;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.GetBool(const aNode: TDOMNode; const aDefault: Boolean): Boolean;
- var
- s: String;
- begin
- if not Assigned(aNode)
- or ( not aNode.HasChildNodes
- and not (aNode is TDOMText))
- then
- begin
- result := aDefault;
- exit;
- end;
- s := LowerCase(String(aNode.TextContent));
- if (s = 'true') or (s = 't') or (s = '1') then
- result := true
- else if (s = 'false') or (s = 'f') or (s = '0') then
- result := false
- else
- result := aDefault;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.Nodes(const aElement: TDOMElement; const aName: DOMString): IutlNodeEnumerator;
- begin
- result := TutlNodeEnumerator.Create(aElement, aName);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.PrependNode(const aElement: TDOMElement; const aName: DOMString): TDOMElement;
- begin
- result := aElement.OwnerDocument.CreateElement(aName);
- if aElement.HasChildNodes
- then aElement.InsertBefore(result, aElement.FirstChild)
- else aElement.AppendChild(result);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TutlXmlHelperImpl.AppendNode(const aElement: TDOMElement; const aName: DOMString): TDOMElement;
- begin
- result := aElement.OwnerDocument.CreateElement(aName);
- aElement.AppendChild(result);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class procedure TutlXmlHelperImpl.PrependText(const aElement: TDOMElement; const aText: DOMString);
- var n: TDOMNode;
- begin
- n := aElement.OwnerDocument.CreateTextNode(aText);
- if aElement.HasChildNodes
- then aElement.InsertBefore(n, aElement.FirstChild)
- else aElement.AppendChild(n);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class procedure TutlXmlHelperImpl.AppendText(const aElement: TDOMElement; const aText: DOMString);
- begin
- aElement.AppendChild(aElement.OwnerDocument.CreateTextNode(aText));
- end;
-
- end.
|