LZScene

Форк
0
/
GLSCrossXML.pas 
137 строк · 3.7 Кб
1
//
2
// This unit is part of the GLScene Engine https://github.com/glscene
3
//
4
{
5
    History :  
6
     23/08/10 - Yar - Creation
7
  
8
}
9

10
unit GLSCrossXML;
11

12
interface
13

14
uses
15
  Classes,
16
  SysUtils,
17

18
  DOM,
19
  XMLRead,
20
  XMLWrite;
21

22
type
23
  GLSXMLDocument = TXMLDocument;
24
  GLSXMLNode = TDOMNode;
25
  GLSDOMNode = TDOMNode;
26

27
function GLSNewXMLDocument: GLSXMLDocument;
28
procedure ReleaseXMLDocument(var ADoc: GLSXMLDocument);
29
procedure WriteXMLFile(var ADoc: GLSXMLDocument; AStream: TStream); overload;
30
procedure ReadXMLFile(var ADoc: GLSXMLDocument; AStream: TStream); overload;
31
procedure WriteXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
32
procedure ReadXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
33
function GetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; out Value: string): Boolean; overload;
34
function GetXMLAttribute(const XMLNode: GLSXMLNode; Idx: Integer): GLSXMLNode; overload;
35
procedure SetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; const Value: string); overload;
36

37
function GetXMLAttributeCount(const XMLNode: GLSXMLNode): Integer;
38
function FindXMLNode(const ParentNode: GLSXMLNode; const NodeName: string; out ChildNode: GLSXMLNode): Boolean;
39
function CreateDOMNode(const ParentNode: GLSDOMNode; const NodeName: string): GLSDOMNode;
40
procedure SetXMLText(const DOMNode: GLSDOMNode; const AText: string);
41
function GetXMLText(const XMLNode: GLSXMLNode; out AText: string): Boolean;
42

43
implementation
44

45
function GLSNewXMLDocument: GLSXMLDocument;
46
begin
47
  Result := TXMLDocument.Create;
48
end;
49

50
procedure ReleaseXMLDocument(var ADoc: GLSXMLDocument);
51
begin
52
  FreeAndNil(ADoc);
53
end;
54

55
procedure WriteXMLFile(var ADoc: GLSXMLDocument; AStream: TStream);
56
begin
57
  XMLWrite.WriteXMLFile(ADoc, AStream);
58
end;
59

60
procedure ReadXMLFile(var ADoc: GLSXMLDocument; AStream: TStream);
61
begin
62
  XMLRead.ReadXMLFile(ADoc, AStream);
63
end;
64

65
procedure WriteXMLFile(var ADoc: GLSXMLDocument; AFileName: string);
66
begin
67
  XMLWrite.WriteXMLFile(ADoc, AFileName);
68
end;
69

70
procedure ReadXMLFile(var ADoc: GLSXMLDocument; AFileName: string);
71
begin
72
  XMLRead.ReadXMLFile(ADoc, AFileName);
73
end;
74

75
function GetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; out Value: string): Boolean;
76
var
77
  E: TDOMElement;
78
begin
79
  E := XMLNode as TDOMElement;
80
  Value := E[AttrName];
81
  Result := Length(Value) > 0;
82
end;
83

84
procedure SetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; const Value: string);
85
var
86
  E: TDOMElement;
87
begin
88
  E := XMLNode as TDOMElement;
89
  E[AttrName] := Value;
90
end;
91

92
function FindXMLNode(const ParentNode: GLSXMLNode; const NodeName: string; out ChildNode: GLSXMLNode): Boolean;
93
var
94
  E: TDOMElement;
95
begin
96
  E := ParentNode as TDomElement;
97
  ChildNode := E.FindNode(NodeName);
98
  Result := Assigned(ChildNode);
99
end;
100

101
function CreateDOMNode(const ParentNode: GLSDOMNode; const NodeName: string): GLSDOMNode;
102
begin
103
  Result := ParentNode.OwnerDocument.CreateElement(NodeName);
104
  ParentNode.AppendChild(Result);
105
end;
106

107
procedure SetXMLText(const DOMNode: GLSDOMNode; const AText: string);
108
begin
109
  DOMNode.AppendChild(DOMNode.ownerDocument.createTextNode(AText));
110
end;
111

112
function GetXMLText(const XMLNode: GLSXMLNode; out AText: string): Boolean;
113
var
114
  E: TDOMElement;
115
begin
116
  E := XMLNode as TDOMElement;
117
  AText := E.TextContent;
118
  Result := Length(AText)>0;
119
end;
120

121
function GetXMLAttributeCount(const XMLNode: GLSXMLNode): Integer;
122
var
123
  E: TDOMElement;
124
begin
125
  E := XMLNode as TDOMElement;
126
  Result := E.Attributes.Length;
127
end;
128

129
function GetXMLAttribute(const XMLNode: GLSXMLNode; Idx: Integer): GLSXMLNode;
130
var
131
  E: TDOMElement;
132
begin
133
  E := XMLNode as TDOMElement;
134
  Result := E.Attributes[Idx];
135
end;
136

137
end.
138

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.