JunkBox_Lib  1.10.2
txml.h
Go to the documentation of this file.
1 #ifndef __JBXL_TINY_XML_H_
2 #define __JBXL_TINY_XML_H_
3 
24 #include "tools.h"
25 #include "ttree.h"
26 #include "jbxl_state.h"
27 
28 
104 typedef tTree tXML;
105 
106 
107 // ノード種別 (ldat.id)
108 #define XML_ANCHOR_NODE JBXL_STATE_ANCHOR
109 #define XML_NAME_NODE 1
110 #define XML_CONTENT_NODE 2
111 #define XML_DOC_NODE 3
112 #define XML_COMMENT_NODE 4
113 #define XML_DATA_NODE 5
114 #define XML_PROCESS_NODE 6
115 
116 // XML Format
117 #define XML_ONELINE_FORMAT 0
118 #define XML_CRLF_FORMAT 1
119 #define XML_TAB_FORMAT 2
120 #define XML_SPACE_FORMAT 3
121 #define XML_SPACE2_FORMAT 3
122 #define XML_SPACE4_FORMAT 4
123 
124 // 代用ノード名 (ldat.key.buf)
125 #define XML_COMMENT_NODE_KEY "@COMMENT_NODE"
126 #define XML_DATA_NODE_KEY "@DATA_NODE"
127 
128 
129 
131 // XML Functions
132 
133 #define new_xml_node() new_tTree_node()
134 #define new_xml() new_tTree_node()
135 #define new_xml_anchor_node() new_tTree_anchor_node()
136 #define del_xml_anchor(t) del_tTree_anchor_node((t))
137 #define del_xml_anchor_nodet() del_tTree_anchor_node((t))
138 
139 
140 // Paser
141 tXML* xml_parse(char* pp);
142 tXML* xml_parse_file(const char* pp);
143 tXML* xml_parse_seq(tXML* xml, char* pp);
144 tXML* xml_main_parse(tXML* xml, char* pp, int skip);
145 
146 int xml_parse_start_node(char* pp, char** node_name, char** node_attr, int* node_end);
147 int xml_parse_end_node(char* pp, char** node_name);
148 int xml_parse_content(char* pp, char** content);
149 int xml_parse_comment_node(char* pp, char** comment);
150 int xml_parse_data_node(char* pp, char** data);
151 int xml_parse_processing_node(char* pp, char** node_name, char** node_attr);
152 tList* xml_parse_attr(char* pp);
153 
154 void close_xml(tXML* pp);
155 int isnot_xml_name(unsigned char* pp);
156 
157 
158 #define find_xml_top(p) find_tList_top(p)
159 #define find_xml_end(p) find_tTree_end(p)
160 
161 // 逆パース
162 Buffer xml_inverse_parse(tXML* pp, int mode);
163 void xml_open_node_Buffer (tXML* pp, Buffer* buf, int mode, int indent);
164 void xml_close_node_Buffer(tXML* pp, Buffer* buf, int mode, int indent);
165 void xml_attr_to_Buffer(tList* pp, Buffer* buf);
166 void _xml_to_Buffer(tXML* pp, Buffer* buf, int mode, int indent);
167 
168 // Operation
169 tXML* init_xml_doc(void);
170 char* get_first_xml_nodename(tXML* xml);
171 tXML* add_xml_node(tXML* xml, const char* name);
172 tXML* insert_xml_node(tXML* xml, const char* name);
173 
174 tXML* add_xml_attr(tXML* xml, const char* attr);
175 tXML* add_xml_attr_str (tXML* xml, const char* name, const char* value);
176 tXML* add_xml_attr_int (tXML* xml, const char* name, int value);
177 tXML* add_xml_attr_float (tXML* xml, const char* name, float value);
178 tXML* add_xml_attr_double(tXML* xml, const char* name, double value);
179 
180 tXML* add_xml_content_node(tXML* xml, const char* value);
181 tXML* append_xml_content_node(tXML* xml, const char* value);
182 tXML* set_xml_content_node(tXML* xml, const char* value);
183 int add_xml_content_area(tXML* xml, int len);
184 
185 #define join_xml(a, b) add_tTree_node((a), (b))
186 
187 Buffer make_xml_attr_bystr (const char* name, const char* value);
188 Buffer make_xml_attr_byint (const char* name, int value);
189 Buffer make_xml_attr_byfloat (const char* name, float value);
190 Buffer make_xml_attr_bydouble(const char* name, double value);
191 
192 #define make_xml_attr_str(n, v) make_xml_attr_bystr ((n), (v))
193 #define make_xml_attr_int(n, v) make_xml_attr_byint ((n), (v))
194 #define make_xml_attr_float(n, v) make_xml_attr_byfloat ((n), (v))
195 #define make_xml_attr_double(n, v) make_xml_attr_bydouble((n), (v))
196 
197 char* xml_get_node_content(tXML* node);
198 char* xml_get_node_attr(tXML* node, const char* attr);
199 
200 tXML* dup_merge_xml(tXML* pp, tXML* tp);
201 
202 #define free_xml(p) free_tTree_node((p))
203 #define del_xml(p) del_tTree((p))
204 #define del_xml_node(p) del_tTree_node((p))
205 #define del_all_xml(p) del_all_tTree((p))
206 #define del_sisters_xml(p) del_sisters_tTree((p))
207 #define del_sisters_children_xml(p) del_sisters_children_tTree((p))
208 
209 void print_xml(FILE* fp, tXML* pp, int mode);
210 void print_xml_tree(FILE* fp, tXML* pp, const char* space);
211 void print_xml_node(FILE* fp, tXML* pp);
212 void print_sister_xml_tree(FILE* fp, tXML* pp, const char* space);
213 
214 #define print_tXML(f, x) print_tTree((f), (x))
215 #define print_tXML_tree(f, x, s) print_tTree_tree((f), (x), (s))
216 
217 
219 // Search and Get/Set 操作対象は1番最初に一致したもの
220 
221 tXML* get_xml_node(tXML* pp, tXML* pt);
222 int set_xml_node(tXML* pp, tXML* pt, const char* val);
223 int set_xml_end_node(tXML* pp, tXML* pt);
224 
225 tXML* get_xml_attr_node(tXML* pp, const char* key, const char* val);
226 
227 tXML* get_xml_content(tXML* pp, tXML* pt);
228 int set_xml_content(tXML* pp, tXML* pt, const char* val);
229 tList* get_xml_attr(tXML* pp, tXML* pt);
230 int set_xml_attr(tXML* pp, tXML* pt, tList* at);
231 
232 tXML* get_xml_node_bystr(tXML* pp, const char* str);
233 int set_xml_node_bystr(tXML* pp, const char* str, const char* val);
234 int set_xml_end_node_bystr(tXML* pp, const char* str);
235 
236 tXML* get_xml_content_bystr(tXML* pp, const char* str);
237 int set_xml_content_bystr(tXML* pp, const char* str, const char* val);
238 tList* get_xml_attr_bystr(tXML* pp, const char* str);
239 int set_xml_attr_bystr(tXML* pp, const char* pt, tList* at);
240 
241 int get_xml_int_content(tXML* pp, tXML* pt);
242 int get_xml_int_content_bystr(tXML* pp, const char* str);
243 float get_xml_float_content(tXML* pp, tXML* pt);
244 float get_xml_float_content_bystr(tXML* pp, const char* str);
245 double get_xml_double_content(tXML* pp, tXML* pt);
246 double get_xml_double_content_bystr(tXML* pp, const char* str);
247 char* get_xml_char_content(tXML* pp, tXML* pt);
248 char* get_xml_char_content_bystr(tXML* pp, const char* str);
249 
250 char* get_xml_char_attr(tXML* pp, tXML* pt, const char* attr);
251 char* get_xml_char_attr_bystr(tXML* pp, const char* str, const char* attr);
252 int get_xml_int_attr(tXML* pp, tXML* pt, const char* attr);
253 int get_xml_int_attr_bystr(tXML* pp, const char* str, const char* attr);
254 double get_xml_double_attr(tXML* pp, tXML* pt, const char* attr);
255 double get_xml_double_attr_bystr(tXML* pp, const char* str, const char* attr);
256 
257 int replace_xml_content(tXML*pp, tXML* pt, const char* src, const char* dst);
258 int replace_xml_content_bystr(tXML*pp, const char* str, const char* src, const char* dst);
259 
260 #define get_xml_node_str(p, s) get_xml_node_bystr((p), (s))
261 #define set_xml_node_str(p, s, v) set_xml_node_bystr((p), (s), (v))
262 #define set_xml_end_node_str(p, s) set_xml_end_node_bystr((p), (s))
263 #define get_xml_content_str(p, s) get_xml_content_bystr((p), (s))
264 #define set_xml_content_str(p, s, v) set_xml_content_bystr((p), (s), (v))
265 #define get_xml_attr_str(p, s) get_xml_attr_bystr((p), (s))
266 #define set_xml_attr_str(p, t, a) set_xml_attr_bystr((p), (t), (a))
267 #define replace_xml_content_str(p, t, r, d) replace_xml_content_bystr((p), (t), (r), (d))
268 
269 #define get_xml_int_content_str(p, s) get_xml_int_content_bystr((p), (s))
270 #define get_xml_double_content_str(p, s) get_xml_double_content_bystr((p), (s))
271 #define get_xml_char_content_str(p, s) get_xml_char_content_bystr((p), (s))
272 #define get_xml_char_attr_str(p, s, v) get_xml_char_sttr_bystr((p), (s), (v))
273 
274 #define get_xml_str_content(p, s) get_xml_char_content((p), (s))
275 #define get_xml_str_content_str(p, s) get_xml_char_content_bystr((p), (s))
276 #define get_xml_str_content_bystr(p, s) get_xml_char_content_bystr((p), (s))
277 #define get_xml_str_attr(p, s) get_xml_char_attr((p), (s))
278 #define get_xml_str_attr_str(p, s, v) get_xml_char_attr_bystr((p), (s), (v))
279 #define get_xml_str_attr_bystr(p, s, v) get_xml_char_attr_bystr((p), (s), (v))
280 #define get_xml_int_attr_str(p, s, v) get_xml_int_attr_bystr((p), (s), (v))
281 #define get_xml_double_attr_str(p, s, v) get_xml_double_attr_bystr((p), (s), (v))
282 
283 // Operation for Multi Node
284 tList* get_xml_node_list(tXML* pp, tXML* pt);
285 tList* get_xml_content_list(tXML* pp, tXML* pt);
286 int set_xml_content_list(tXML* pp, tXML* pt, const char* content);
287 
288 tList* get_xml_node_list_bystr(tXML* pp, const char* str);
289 tList* get_xml_content_list_bystr(tXML* pp, const char* str);
290 int set_xml_content_list_bystr(tXML* pp, const char* str, const char* content);
291 
292 #define get_xml_node_list_str(p, s) get_xml_node_list_bystr((p), (s))
293 #define get_xml_content_list_str(p, s) get_xml_content_list_bystr((p), (s))
294 #define set_xml_content_list_str(p, s, c) set_xml_content_list_bystr((p), (s), (c))
295 
296 
298 // Search XML Node (tTree用の関数とほぼ同じ).ツリーを返す.
299 
300 int find_match_xml(tXML* pp, tXML* pt);
304 
305 int check_match_xml(tXML* tp, tXML* tr);
306 tXML* cmp_sisters_xml(tXML* tp, tXML* tr);
307 
308 
310 // Simple Node Functions.
311 
312 int get_node_integer(tXML* tp, const char* name, int no);
313 Buffer get_node_content(tXML* tp, const char* name, int no);
314 
315 int return_exist_node(tXML* tp, const char* name, int no, Buffer* value);
316 
317 int replace_all_node_integer (tXML* tp, const char* name, int src, int dst);
318 int replace_all_node_contents(tXML* tp, const char* name, const char* src, const char* dst);
319 int _replace_all_node_contents_rcsv(tXML* tp, const char* name, const char* src, const char* dst);
320 
321 int replace_all_node_byid(tXML* tp, const char* src, const char* dst, int id);
322 int _replace_all_node_byid_rcsv(tXML* tp, const char* src, const char* dst, int id);
323 
324 
326 // XML-RPC
327 
328 Buffer xml_rpc_request_pack(const char* method, tXML* xml);
329 tXML* xml_rpc_add_member(tXML* xml, char* name, char* value, char* kind);
331 tXML* xml_rpc_add_array(tXML* xml, tXML* arry);
332 tXML* xml_rpc_end_array(tXML* xml);
333 
334 
335 #endif // __JBXL_TINY_XML_H_
JunkBox_Lib 状態ヘッダ
unsigned char ** buf
Definition: jpeg_tool.h:96
unsigned char unsigned long * len
Definition: jpeg_tool.h:96
Definition: buffer.h:35
汎用ツールヘッダ
Tiny Tree Graph 構造ライブラリヘッダ
double get_xml_double_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を double型で返す.
Definition: txml.c:2168
tXML * append_xml_content_node(tXML *xml, const char *value)
XMLツリーのxml の直下のコンテントノードにコンテンツを追加する.
Definition: txml.c:1313
tList * get_xml_attr(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードのノード属性値へのリストを altp に入れて返す.
Definition: txml.c:2207
char * get_xml_char_attr(tXML *pp, tXML *pt, const char *attr)
get_xml_node() で検索したノードから,属性値 attrの値を char*型で取り出す.free() してはいけない.
Definition: txml.c:2225
tXML * xml_rpc_add_member(tXML *xml, char *name, char *value, char *kind)
XML-RPC の <member> データを作って,繋げていく.
Definition: txml.c:3408
char * get_xml_char_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を char*型で返す.free() してはいけない.
Definition: txml.c:2183
tXML * xml_rpc_end_array(tXML *xml)
配列データを閉じて,送信用データを生成する.
Definition: txml.c:3490
void _xml_to_Buffer(tXML *pp, Buffer *buf, int mode, int indent)
xml_inverse_parse()用の補助関数.
Definition: txml.c:928
float get_xml_float_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を float型で返す.
Definition: txml.c:2153
void print_sister_xml_tree(FILE *fp, tXML *pp, const char *space)
XMLツリーの表示.ppの姉妹ノードも出力する.
Definition: txml.c:1798
int get_node_integer(tXML *tp, const char *name, int no)
tp中のXMLデータから no番目のノード '<node_name>node_content(整数)</node_name>' の node_content(整数)を得る.
Definition: txml.c:3147
void print_xml_node(FILE *fp, tXML *pp)
MLのノード情報を表示する.デバッグ用.
Definition: txml.c:1719
tList * get_xml_node_list(tXML *pp, tXML *pt)
XMLツリー pp内で XMLツリー ptと同じパターンの枝を探し,ptに一致した枝の,ptの最後のノードに対応するノードへのポインタをリストに格納して返す.
Definition: txml.c:2656
tXML * add_xml_attr_float(tXML *xml, const char *name, float value)
xml に属性名 name, float型実数の属性値 value を持つノードを追加する.
Definition: txml.c:1454
tXML * add_xml_content_node(tXML *xml, const char *value)
XMLツリーのxml の直下にコンテントを挿入する.
Definition: txml.c:1287
int set_xml_end_node_bystr(tXML *pp, const char *str)
set_xml_end_node(tXML* pp, tXML* pt) の _bystr バージョン
Definition: txml.c:2391
int return_exist_node(tXML *tp, const char *name, int no, Buffer *value)
bufの中に ノード '<name>content</name>' が存在するかどうかチェックする.
Definition: txml.c:3168
tXML * find_match_xml_end_node(tXML *pp, tXML *pt)
XMLツリー pp内で XMLツリー ptと同じパターンの枝を探し,ptの最後のノードに対応する pp内のノードへのポインタを返す.
Definition: txml.c:2948
int xml_parse_comment_node(char *pp, char **comment)
XMLのコメントノードを処理する.
Definition: txml.c:730
int set_xml_node_bystr(tXML *pp, const char *str, const char *val)
set_xml_node(tXML* pp, tXML* pt, const char* val) の _bystr バージョン
Definition: txml.c:2372
tXML * add_xml_attr(tXML *xml, const char *attr)
xml に属性(attr)を追加する.
Definition: txml.c:1401
int replace_xml_content(tXML *pp, tXML *pt, const char *src, const char *dst)
get_xml_content() を使用し,XMLキーの src部分を dstで書き換える.
Definition: txml.c:2328
float get_xml_float_content_bystr(tXML *pp, const char *str)
get_xml_float_content(tXML* pp, tXML* pt) の _bystr バージョン.
Definition: txml.c:2446
int replace_all_node_contents(tXML *tp, const char *name, const char *src, const char *dst)
XMLツリー pp内で ノード名が nameである全てのノードのコンテントを,srcから dstに書き換える.
Definition: txml.c:3219
int find_match_xml(tXML *pp, tXML *pt)
ツリー pp内で ツリー ptと同じパターンの枝を探す.姉妹ツリーも検索するので注意.
Definition: txml.c:2848
void print_xml_tree(FILE *fp, tXML *pp, const char *space)
XMLツリーをそのままツリー表示する.デバッグ用.
Definition: txml.c:1759
tXML * init_xml_doc(void)
XML のドキュメントヘッダを作成する.
Definition: txml.c:1203
tList * get_xml_node_list_bystr(tXML *pp, const char *str)
get_xml_node_list() の _bystr バージョン.
Definition: txml.c:2760
char * get_xml_char_attr_bystr(tXML *pp, const char *str, const char *attr)
get_xml_char_attr() の _bystr バージョン.free() してはいけない.
Definition: txml.c:2533
tXML * add_xml_attr_int(tXML *xml, const char *name, int value)
xml に属性名 name, 整数の属性値 value を持つノードを追加する.
Definition: txml.c:1437
char * xml_get_node_attr(tXML *node, const char *attr)
属性値を持つノードのポインタから,指定された属性値へのポインタを返す.free() してはいけない.
Definition: txml.c:1606
double get_xml_double_attr_bystr(tXML *pp, const char *str, const char *attr)
get_xml_double_attr() の _bystr バージョン.
Definition: txml.c:2579
void print_xml(FILE *fp, tXML *pp, int mode)
XMLの表示(出力).
Definition: txml.c:1691
char * get_xml_char_content_bystr(tXML *pp, const char *str)
get_xml_char_content(tXML* pp, tXML* pt) の _bystr バージョン.free() してはいけない.
Definition: txml.c:2479
int _replace_all_node_byid_rcsv(tXML *tp, const char *src, const char *dst, int id)
replace_all_node_byid() の補助関数
Definition: txml.c:3314
tXML * get_xml_attr_node(tXML *pp, const char *key, const char *val)
属性 key=val のノードを探し,最初に見つけたノードを返す.
Definition: txml.c:2007
tList * _find_match_xml_endlist_rcsv(tXML *pp, tXML *pt, tXML *te)
find_match_xml_endlist() の補助関数
Definition: txml.c:2907
int replace_all_node_integer(tXML *tp, const char *name, int src, int dst)
XMLツリー pp内で ノード名が nameである全てのノードのコンテント(整数)を,srcから dstに書き換える.
Definition: txml.c:3192
char * get_first_xml_nodename(tXML *xml)
XMLツリーの最初のノードの名前を返す.
Definition: txml.c:1491
int get_xml_int_attr_bystr(tXML *pp, const char *str, const char *attr)
get_xml_int_attr() の _bystr バージョン.
Definition: txml.c:2551
tXML * add_xml_node(tXML *xml, const char *name)
XMLツリーのxml の直下(姉妹の一番下:末っ子)にノード(属性は指定しない)を挿入する.
Definition: txml.c:1219
int set_xml_attr_bystr(tXML *pp, const char *pt, tList *at)
set_xml_attr(tXML* pp, tXML* pt, tList* at) の _bystr バージョン.
Definition: txml.c:2605
tXML * xml_parse(char *pp)
文字列のXMLデータを解釈して,tXMLのツリーを生成する.
Definition: txml.c:48
int get_xml_int_content_bystr(tXML *pp, const char *str)
get_xml_int_content(tXML* pp, tXML* pt) の _bystr バージョン
Definition: txml.c:2430
int set_xml_attr(tXML *pp, tXML *pt, tList *at)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードのノードの属性としてatの値をコピーする.
Definition: txml.c:2307
tXML * xml_rpc_end_member(tXML *xml)
<struct><member> データを閉じて,<value> データを作り出す.
Definition: txml.c:3451
Buffer xml_rpc_request_pack(const char *method, tXML *xml)
XML-RPC用のデータを生成する.
Definition: txml.c:3376
tList * get_xml_content_list_bystr(tXML *pp, const char *str)
get_xml_conetnt_list_bystr() の _bystr バージョン.
Definition: txml.c:2780
int set_xml_content_list(tXML *pp, tXML *pt, const char *content)
get_xml_content_list() で検出したコンテントを, content で置き換える.
Definition: txml.c:2731
int xml_parse_start_node(char *pp, char **node_name, char **node_attr, int *node_end)
XMLの開始ノードを処理する.
Definition: txml.c:371
int set_xml_end_node(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードへのポインタを返す.
Definition: txml.c:1956
int check_match_xml(tXML *tp, tXML *tr)
XMLツリー tpが XMLツリー trと同じかどうかを検査する.
Definition: txml.c:2991
Buffer make_xml_attr_byfloat(const char *name, float value)
属性名 name, float型実数の属性値 value を持つ Buffer型変数を作成する.
Definition: txml.c:1552
Buffer make_xml_attr_bystr(const char *name, const char *value)
属性名 name, 文字列の属性値 value を持つ Buffer型変数を作成する.
Definition: txml.c:1517
tXML * get_xml_node_bystr(tXML *pp, const char *str)
get_xml_node(tXML* pp, tXML* pt) の _bystr バージョン
Definition: txml.c:2353
tXML * add_xml_attr_double(tXML *xml, const char *name, double value)
xml に属性名 name, double型実数の属性値 value を持つノードを追加する.
Definition: txml.c:1471
int set_xml_content_list_bystr(tXML *pp, const char *str, const char *content)
set_xml_content_list_bystr() の _bystr バージョン.
Definition: txml.c:2800
int set_xml_node(tXML *pp, tXML *pt, const char *val)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノード対応したノードにノード名をコピーする.
Definition: txml.c:1921
int xml_parse_processing_node(char *pp, char **node_name, char **node_attr)
XMLのプロセッシングノードを処理する
Definition: txml.c:654
void close_xml(tXML *pp)
パースエラーを起こしたツリーを強制的に正常化する.
Definition: txml.c:836
void xml_attr_to_Buffer(tList *pp, Buffer *buf)
リストに保存されたノードの属性をテキストへ戻す.
Definition: txml.c:1178
tXML * xml_rpc_add_array(tXML *xml, tXML *arry)
<value><struct> データから 配列データ <data>...</data> を作って繋げていく.
Definition: txml.c:3469
int set_xml_content_bystr(tXML *pp, const char *str, const char *val)
set_xml_content(tXML* pp, tXML* pt, char* val) の _bystr バージョン
Definition: txml.c:2494
double get_xml_double_content_bystr(tXML *pp, const char *str)
get_xml_double_content(tXML* pp, tXML* pt) の _bystr バージョン.
Definition: txml.c:2462
tXML * get_xml_node(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードへのポインタを返す.
Definition: txml.c:1874
char * xml_get_node_content(tXML *node)
コンテントへのポインタを返す.free() してはいけない.
Definition: txml.c:1590
int replace_xml_content_bystr(tXML *pp, const char *str, const char *src, const char *dst)
replace_xml_content(tXML*pp, tXML* pt, char* src, char* dst) の _bystr バージョン.
Definition: txml.c:2624
int replace_all_node_byid(tXML *tp, const char *src, const char *dst, int id)
XMLツリー pp内で ノードの種別が idである全てのノードの内容を srcから dstに書き換える.
Definition: txml.c:3291
int xml_parse_data_node(char *pp, char **data)
XMLのデータノード(その他エレメントノードなど)を処理する.
Definition: txml.c:773
int get_xml_int_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を int型で返す.
Definition: txml.c:2138
int add_xml_content_area(tXML *xml, int len)
xml に空のコンテントノードを追加する.
Definition: txml.c:1376
tXML * get_xml_content_bystr(tXML *pp, const char *str)
get_xml_content(tXML* pp, tXML* pt) の _bystr バージョン
Definition: txml.c:2410
tXML * xml_parse_file(const char *pp)
ファイルから読み込んでパースする.
Definition: txml.c:94
tXML * add_xml_attr_str(tXML *xml, const char *name, const char *value)
xml に属性名 name, 文字列の属性値 value を持つノードを追加する.
Definition: txml.c:1420
void xml_close_node_Buffer(tXML *pp, Buffer *buf, int mode, int indent)
ツリー中のXMLのクローズノードのデータを元の書式に戻して Bufferに格納する.
Definition: txml.c:1144
tList * get_xml_content_list(tXML *pp, tXML *pt)
XMLツリー pp内で XMLツリー ptと同じパターンの枝を探し,ptに一致した枝の,ptの最後のノードに対応するノードのコンテントへのポインタをリストに格納して返す.
Definition: txml.c:2691
tXML * cmp_sisters_xml(tXML *tp, tXML *tr)
XMLノード tpの姉妹ノードが trの姉妹ノードと同じ XMLノードまたはコンテントであるかを比較する.
Definition: txml.c:3068
int isnot_xml_name(unsigned char *pp)
XML名として不適切かどうかを大まかに判断する.
Definition: txml.c:810
Buffer get_node_content(tXML *tp, const char *name, int no)
tp中のXMLデータから no番目のノード '<name>node_content</name>' のnode_contentのコピーを得る.
Definition: txml.c:3119
tXML * find_match_xml_endlist(tXML *pp, tXML *pt)
ツリー pp内で ツリー ptと同じパターンの枝を全て探して,その枝のptの最後のノードに対応するノードの情報をリストにして返す.
Definition: txml.c:2886
tXML * get_xml_content(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードのコンテントへのポインタを altp に入れて返す.
Definition: txml.c:2064
tList * xml_parse_attr(char *pp)
XMLのノード属性を解釈して,リスト(tList)にする.
Definition: txml.c:559
int get_xml_int_attr(tXML *pp, tXML *pt, const char *attr)
get_xml_node() で検索したノードから,属性値 attrの値を int型で取り出す.
Definition: txml.c:2242
tList * get_xml_attr_bystr(tXML *pp, const char *str)
get_xml_attr(tXML* pp, tXML* pt, tList* at) の _bystr バージョン.
Definition: txml.c:2513
int xml_parse_end_node(char *pp, char **node_name)
XMLの終了ノードを処理する.
Definition: txml.c:468
Buffer make_xml_attr_bydouble(const char *name, double value)
属性名 name, double型実数の属性値 value を持つ Buffer型変数を作成する.
Definition: txml.c:1571
void xml_open_node_Buffer(tXML *pp, Buffer *buf, int mode, int indent)
ツリー中のXMLのオープンノードのデータを元の書式に戻して Bufferに格納する.
Definition: txml.c:958
tXML * xml_main_parse(tXML *xml, char *pp, int skip)
部分的な XMLデータを解釈して,tXMLのツリー構造に格納する.パーサの内部的なメイン関数.
Definition: txml.c:189
Buffer make_xml_attr_byint(const char *name, int value)
属性名 name, 整数の属性値 value を持つ Buffer型変数を作成する.
Definition: txml.c:1533
tXML * insert_xml_node(tXML *xml, const char *name)
XMLツリーのxml の直下(姉妹の一番上:長子)にノード(属性は指定しない)を挿入する.
Definition: txml.c:1242
tXML * dup_merge_xml(tXML *pp, tXML *tp)
XMLツリー ppの直下にXMLツリー tpを複製する.
Definition: txml.c:1632
double get_xml_double_attr(tXML *pp, tXML *pt, const char *attr)
get_xml_node() で検索したノードから,属性値 attrの値を double型で取り出す.
Definition: txml.c:2269
tXML * set_xml_content_node(tXML *xml, const char *value)
XMLツリーのxml の直下のコンテントノードの値を置き換える.
Definition: txml.c:1346
tTree tXML
Definition: txml.h:104
Buffer xml_inverse_parse(tXML *pp, int mode)
ppに格納された XMLデータを元の書式に戻して Bufferに格納する.xml_parse() の逆.
Definition: txml.c:891
int xml_parse_content(char *pp, char **content)
XMLのコンテントを処理する.
Definition: txml.c:513
int set_xml_content(tXML *pp, tXML *pt, const char *val)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後ノードに対応したのノードのコンテントを contentで置き換える.
Definition: txml.c:2119
int _replace_all_node_contents_rcsv(tXML *tp, const char *name, const char *src, const char *dst)
replace_all_node_content() の補助関数
Definition: txml.c:3242
tXML * xml_parse_seq(tXML *xml, char *pp)
部分的な XMLデータを解釈して,tXMLのツリー構造に格納する.断片的にXMLデータを入力する場合に使用する.
Definition: txml.c:135