acl
3.5.3.0
xml2.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include <vector>
4
#include <list>
5
#include "
string.hpp
"
6
#include "
xml.hpp
"
7
8
struct
ACL_XML2
;
9
struct
ACL_XML2_NODE
;
10
struct
ACL_XML2_ATTR
;
11
12
namespace
acl
{
13
14
class
xml2;
15
class
xml2_node;
16
17
class
ACL_CPP_API
xml2_attr
:
public
xml_attr
18
{
19
public
:
20
/**
21
* @override
22
*/
23
const
char
* get_name()
const
;
24
25
/**
26
* @override
27
*/
28
const
char
* get_value()
const
;
29
30
protected
:
31
friend
class
xml2_node
;
32
33
xml2_attr
(
xml_node
* node,
ACL_XML2_ATTR
* attr);
34
~xml2_attr
(
void
) {}
35
36
private
:
37
ACL_XML2_ATTR
* attr_;
38
};
39
40
class
ACL_CPP_API
xml2_node
:
public
xml_node
41
{
42
public
:
43
/**
44
* @override
45
*/
46
const
char
* tag_name(
void
)
const
;
47
48
/**
49
* @override
50
*/
51
const
char
* id(
void
)
const
;
52
53
/**
54
* @override
55
*/
56
const
char
* text(
void
)
const
;
57
58
/**
59
* @override
60
*/
61
const
char
* attr_value(
const
char
*
name
)
const
;
62
63
/**
64
* @override
65
*/
66
const
xml_attr
* first_attr(
void
)
const
;
67
68
/**
69
* @override
70
*/
71
const
xml_attr
* next_attr(
void
)
const
;
72
73
/**
74
* @override
75
*/
76
xml_node
& add_attr(
const
char
*
name
,
const
char
* value);
77
78
/**
79
* @override
80
*/
81
xml_node
& set_text(
const
char
* str,
bool
append =
false
);
82
83
/**
84
* @override
85
*/
86
xml_node
& set_text(
istream
& in,
size_t
off = 0,
size_t
len = 0);
87
88
/**
89
* @override
90
*/
91
xml_node
& add_child(
xml_node
* child,
bool
return_child =
false
);
92
93
/**
94
* @override
95
*/
96
int
detach(
void
);
97
98
/**
99
* @override
100
*/
101
xml_node
& set_parent(
xml_node
* node);
102
103
/**
104
* @override
105
*/
106
xml_node
& get_parent(
void
)
const
;
107
108
/**
109
* @override
110
*/
111
xml_node
* first_child(
void
);
112
113
/**
114
* @override
115
*/
116
xml_node
* next_child(
void
);
117
118
/**
119
* @override
120
*/
121
int
depth(
void
)
const
;
122
123
/**
124
* @override
125
*/
126
bool
is_root(
void
)
const
;
127
128
/**
129
* @override
130
*/
131
int
children_count(
void
)
const
;
132
133
public
:
134
void
set_xml2_node(
ACL_XML2_NODE
* node);
135
136
ACL_XML2_NODE
* get_xml_node(
void
)
const
;
137
138
protected
:
139
friend
class
xml2
;
140
friend
class
dbuf_guard
;
141
142
xml2_node
(
xml
* xml_ptr,
ACL_XML2_NODE
* node);
143
~
xml2_node
(
void
);
144
145
private
:
146
ACL_XML2_NODE
*node_;
147
ACL_ITER
* child_iter_;
148
ACL_ITER
* attr_iter_;
149
150
xml_node
* parent_;
151
xml2_node
* parent_internal_;
152
};
153
154
class
fstream
;
155
156
class
ACL_CPP_API
xml2
:
public
xml
157
{
158
public
:
159
/**
160
* 构造函数,使 xml 对象树创建在指定内存映射文件上
161
* @param filepath {const char*} 内存映射文件名
162
* @param max_len {size_t} 内存映射文件的最大大小,即内存映射文件在自动
163
* 增长时不应超过此大小
164
* @param data {const char*} 非空时自动调用解析过程
165
* @param init_len {size_t} 内存映射文件创建时的初始大小
166
* @param dbuf_nblock {size_t} 内部所用 dbuf_guard 的初始化参数
167
* @param dbuf_capacity {size_t} 内部所用 dbuf_guard 的初始化参数
168
*/
169
xml2
(
const
char
* filepath,
size_t
max_len,
const
char
* data = NULL,
170
size_t
init_len = 8192,
size_t
dbuf_nblock = 2,
171
size_t
dbuf_capacity = 100);
172
173
/**
174
* 构造函数,使 xml 对象树创建在指定内存映射文件上
175
* @param fp {fstream&} 内存映射文件句柄,该文件句柄应在本 xml 对象
176
* 释放前一直保持打开状态,即 fp 必须在 xml 对象释放后才可以关闭
177
* @param max_len {size_t} 内存映射文件的最大大小,即内存映射文件在自动
178
* 增长时不应超过此大小
179
* @param data {const char*} 非空时自动调用解析过程
180
* @param init_len {size_t} 内存映射文件创建时的初始大小
181
* @param dbuf_nblock {size_t} 内部所用 dbuf_guard 的初始化参数
182
* @param dbuf_capacity {size_t} 内部所用 dbuf_guard 的初始化参数
183
*/
184
xml2
(
fstream
& fp,
size_t
max_len,
const
char
* data = NULL,
185
size_t
init_len = 8192,
size_t
dbuf_nblock = 2,
186
size_t
dbuf_capacity = 100);
187
188
/**
189
* 构造函数,使 xml 对象树创建在指定内存映射文件上
190
* @param fd {ACL_FILE_HANDLE} 内存映射文件句柄,该文件句柄应在本 xml
191
* 对象释放前一直保持打开状态,即 fp 必须在 xml 对象释放后才可以关闭
192
* @param max_len {size_t} 内存映射文件的最大大小,即内存映射文件在自动
193
* 增长时不应超过此大小
194
* @param data {const char*} 非空时自动调用解析过程
195
* @param init_len {size_t} 内存映射文件创建时的初始大小
196
* @param dbuf_nblock {size_t} 内部所用 dbuf_guard 的初始化参数
197
* @param dbuf_capacity {size_t} 内部所用 dbuf_guard 的初始化参数
198
*/
199
#if defined(_WIN32) || defined(_WIN64)
200
xml2
(
void
* fd,
size_t
max_len,
const
char
* data = NULL,
201
size_t
init_len = 8192,
size_t
dbuf_nblock = 2,
202
size_t
dbuf_capacity = 100);
203
#else
204
xml2
(
int
fd,
size_t
max_len,
const
char
* data = NULL,
205
size_t
init_len = 8192,
size_t
dbuf_nblock = 2,
206
size_t
dbuf_capacity = 100);
207
#endif
208
209
~
xml2
(
void
);
210
211
/**
212
* @override
213
*/
214
xml
& ignore_slash(
bool
on);
215
216
/**
217
* @override
218
*/
219
xml
& xml_decode(
bool
on);
220
221
/**
222
* @override
223
*/
224
xml
& xml_encode(
bool
on);
225
226
/**
227
* @override
228
*/
229
xml
& xml_multi_root(
bool
on);
230
231
/**
232
* @override
233
*/
234
const
char
* update(
const
char
* data);
235
236
/**
237
* @override
238
*/
239
bool
complete(
const
char
* root_tag);
240
241
/**
242
* @override
243
*/
244
void
reset(
void
);
245
246
/**
247
* @override
248
*/
249
const
string
& getText(
void
);
250
251
/**
252
* @override
253
*/
254
const
std::vector<xml_node*>&
255
getElementsByTagName(
const
char
* tag)
const
;
256
257
/**
258
* @override
259
*/
260
xml_node
* getFirstElementByTag(
const
char
* tag)
const
;
261
262
/**
263
* @override
264
*/
265
const
std::vector<xml_node*>&
266
getElementsByTags(
const
char
* tags)
const
;
267
268
/**
269
* @override
270
*/
271
xml_node
* getFirstElementByTags(
const
char
* tags)
const
;
272
273
/**
274
* @override
275
*/
276
const
std::vector<xml_node*>&
277
getElementsByName(
const
char
* value)
const
;
278
279
/**
280
* @override
281
*/
282
const
std::vector<xml_node*>& getElementsByAttr(
283
const
char
*
name
,
const
char
* value)
const
;
284
285
/**
286
* @override
287
*/
288
xml_node
* getElementById(
const
char
*
id
)
const
;
289
290
/**
291
* @override
292
*/
293
xml_node
& create_node(
const
char
* tag,
const
char
* text = NULL);
294
295
/**
296
* @override
297
*/
298
xml_node
& create_node(
const
char
* tag,
istream
& in,
299
size_t
off = 0,
size_t
len = 0);
300
301
/**
302
* @override
303
*/
304
xml_node
& get_root(
void
);
305
306
/**
307
* @override
308
*/
309
xml_node
* first_node(
void
);
310
311
/**
312
* @override
313
*/
314
xml_node
* next_node(
void
);
315
316
/**
317
* @override
318
*/
319
void
build_xml(
string
& out)
const
;
320
321
/**
322
* @override
323
*/
324
const
char
* to_string(
size_t
* len = NULL)
const
;
325
326
/**
327
* @override
328
*/
329
size_t
space(
void
)
const
;
330
331
/**
332
* @override
333
*/
334
void
space_clear(
void
);
335
336
/**
337
* @override
338
*/
339
size_t
node_count(
void
)
const
;
340
341
/**
342
* @override
343
*/
344
size_t
attr_count(
void
)
const
;
345
346
public
:
347
ACL_XML2
*
get_xml2
(
void
)
const
348
{
349
return
xml_;
350
}
351
352
private
:
353
ACL_XML2
* xml_;
354
ACL_ITER
* iter_;
355
xml2_node
* root_;
356
};
357
358
}
// namespace acl
acl::istream
Definition:
istream.hpp:15
name
HTTP_API void const char * name
Definition:
lib_http.h:620
acl::xml2_attr::~xml2_attr
~xml2_attr(void)
Definition:
xml2.hpp:34
acl::xml2_attr
Definition:
xml2.hpp:17
xml.hpp
string.hpp
acl
Definition:
acl_cpp_init.hpp:4
ACL_XML2_ATTR
Definition:
acl_xml2.h:20
acl::xml2
Definition:
xml2.hpp:156
ACL_ITER
Definition:
acl_iterator.h:9
acl::xml_node
Definition:
xml.hpp:51
acl::xml2_node
Definition:
xml2.hpp:40
ACL_XML2
Definition:
acl_xml2.h:105
ACL_XML2_NODE
Definition:
acl_xml2.h:34
acl::xml_attr
Definition:
xml.hpp:25
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
acl::xml2::get_xml2
ACL_XML2 * get_xml2(void) const
Definition:
xml2.hpp:347
acl::dbuf_guard
Definition:
dbuf_pool.hpp:210
acl::fstream
Definition:
fstream.hpp:10
acl::xml
Definition:
xml.hpp:331
include
acl_cpp
stdlib
xml2.hpp
生成于 2021年 九月 10日 星期五 11:14:45 , 为 acl使用
1.8.15