1#ifndef  __JBXL_TINY_XML_H_ 
    2#define  __JBXL_TINY_XML_H_ 
  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            
  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            
  125#define  XML_COMMENT_NODE_KEY       "@COMMENT_NODE" 
  126#define  XML_DATA_NODE_KEY          "@DATA_NODE" 
  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))   
  158#define find_xml_top(p)        find_tList_top(p)     
  159#define find_xml_end(p)        find_tTree_end(p)     
  185#define join_xml(a, b)              add_tTree_node((a), (b))                 
  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))         
  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))          
  214#define print_tXML(f, x)            print_tTree((f), (x)) 
  215#define print_tXML_tree(f, x, s)    print_tTree_tree((f), (x), (s)) 
  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))    
  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))           
  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))         
  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))   
Tiny Tree Graph 構造ライブラリヘッダ
 
double get_xml_double_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を double型で返す.
 
char * get_xml_char_attr_bystr(tXML *pp, const char *str, const char *attr)
get_xml_char_attr() の _bystr バージョン.free() してはいけない.
 
tXML * xml_main_parse(tXML *xml, char *pp, int skip)
部分的な XMLデータを解釈して,tXMLのツリー構造に格納する.パーサの内部的なメイン関数.
 
void _xml_to_Buffer(tXML *pp, Buffer *buf, int mode, int indent)
xml_inverse_parse()用の補助関数.
 
float get_xml_float_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を float型で返す.
 
void print_sister_xml_tree(FILE *fp, tXML *pp, const char *space)
XMLツリーの表示.ppの姉妹ノードも出力する.
 
tXML * xml_rpc_end_array(tXML *xml)
配列データを閉じて,送信用データを生成する.
 
int get_node_integer(tXML *tp, const char *name, int no)
tp中のXMLデータから no番目のノード '<node_name>node_content(整数)</node_name>' の node_content(整数)を得る.
 
tXML * append_xml_content_node(tXML *xml, const char *value)
XMLツリーのxml の直下のコンテントノードにコンテンツを追加する.
 
void print_xml_node(FILE *fp, tXML *pp)
MLのノード情報を表示する.デバッグ用.
 
tXML * get_xml_node(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードへのポインタを返す.
 
tXML * xml_rpc_add_member(tXML *xml, char *name, char *value, char *kind)
XML-RPC の <member> データを作って,繋げていく.
 
int set_xml_end_node_bystr(tXML *pp, const char *str)
set_xml_end_node(tXML* pp, tXML* pt) の _bystr バージョン
 
tXML * add_xml_attr_double(tXML *xml, const char *name, double value)
xml に属性名 name, double型実数の属性値 value を持つノードを追加する.
 
int return_exist_node(tXML *tp, const char *name, int no, Buffer *value)
bufの中に ノード '<name>content</name>' が存在するかどうかチェックする.
 
int xml_parse_comment_node(char *pp, char **comment)
XMLのコメントノードを処理する.
 
int set_xml_node_bystr(tXML *pp, const char *str, const char *val)
set_xml_node(tXML* pp, tXML* pt, const char* val) の _bystr バージョン
 
tXML * add_xml_attr_str(tXML *xml, const char *name, const char *value)
xml に属性名 name, 文字列の属性値 value を持つノードを追加する.
 
int replace_xml_content(tXML *pp, tXML *pt, const char *src, const char *dst)
get_xml_content() を使用し,XMLキーの src部分を dstで書き換える.
 
tXML * set_xml_content_node(tXML *xml, const char *value)
XMLツリーのxml の直下のコンテントノードの値を置き換える.
 
float get_xml_float_content_bystr(tXML *pp, const char *str)
get_xml_float_content(tXML* pp, tXML* pt) の _bystr バージョン.
 
int replace_all_node_contents(tXML *tp, const char *name, const char *src, const char *dst)
XMLツリー pp内で ノード名が nameである全てのノードのコンテントを,srcから dstに書き換える.
 
int find_match_xml(tXML *pp, tXML *pt)
ツリー pp内で ツリー ptと同じパターンの枝を探す.姉妹ツリーも検索するので注意.
 
void print_xml_tree(FILE *fp, tXML *pp, const char *space)
XMLツリーをそのままツリー表示する.デバッグ用.
 
tXML * dup_merge_xml(tXML *pp, tXML *tp)
XMLツリー ppの直下にXMLツリー tpを複製する.
 
tXML * xml_parse_file(const char *pp)
ファイルから読み込んでパースする.
 
char * xml_get_node_attr(tXML *node, const char *attr)
属性値を持つノードのポインタから,指定された属性値へのポインタを返す.free() してはいけない.
 
tXML * xml_rpc_add_array(tXML *xml, tXML *arry)
<value><struct> データから 配列データ <data>...</data> を作って繋げていく.
 
double get_xml_double_attr_bystr(tXML *pp, const char *str, const char *attr)
get_xml_double_attr() の _bystr バージョン.
 
void print_xml(FILE *fp, tXML *pp, int mode)
XMLの表示(出力).
 
int _replace_all_node_byid_rcsv(tXML *tp, const char *src, const char *dst, int id)
replace_all_node_byid() の補助関数
 
tList * _find_match_xml_endlist_rcsv(tXML *pp, tXML *pt, tXML *te)
find_match_xml_endlist() の補助関数
 
char * get_xml_char_content_bystr(tXML *pp, const char *str)
get_xml_char_content(tXML* pp, tXML* pt) の _bystr バージョン.free() してはいけない.
 
tXML * xml_rpc_end_member(tXML *xml)
<struct><member> データを閉じて,<value> データを作り出す.
 
int replace_all_node_integer(tXML *tp, const char *name, int src, int dst)
XMLツリー pp内で ノード名が nameである全てのノードのコンテント(整数)を,srcから dstに書き換える.
 
int get_xml_int_attr_bystr(tXML *pp, const char *str, const char *attr)
get_xml_int_attr() の _bystr バージョン.
 
tXML * xml_parse_seq(tXML *xml, char *pp)
部分的な XMLデータを解釈して,tXMLのツリー構造に格納する.断片的にXMLデータを入力する場合に使用する.
 
int set_xml_attr_bystr(tXML *pp, const char *pt, tList *at)
set_xml_attr(tXML* pp, tXML* pt, tList* at) の _bystr バージョン.
 
int get_xml_int_content_bystr(tXML *pp, const char *str)
get_xml_int_content(tXML* pp, tXML* pt) の _bystr バージョン
 
int set_xml_attr(tXML *pp, tXML *pt, tList *at)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードのノードの属性としてatの値をコピーする.
 
tXML * get_xml_node_bystr(tXML *pp, const char *str)
get_xml_node(tXML* pp, tXML* pt) の _bystr バージョン
 
tList * get_xml_content_list_bystr(tXML *pp, const char *str)
get_xml_conetnt_list_bystr() の _bystr バージョン.
 
Buffer xml_rpc_request_pack(const char *method, tXML *xml)
XML-RPC用のデータを生成する.
 
char * get_first_xml_nodename(tXML *xml)
XMLツリーの最初のノードの名前を返す.
 
int set_xml_content_list(tXML *pp, tXML *pt, const char *content)
get_xml_content_list() で検出したコンテントを, content で置き換える.
 
int xml_parse_start_node(char *pp, char **node_name, char **node_attr, int *node_end)
XMLの開始ノードを処理する.
 
int set_xml_end_node(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードへのポインタを返す.
 
int check_match_xml(tXML *tp, tXML *tr)
XMLツリー tpが XMLツリー trと同じかどうかを検査する.
 
Buffer make_xml_attr_byfloat(const char *name, float value)
属性名 name, float型実数の属性値 value を持つ Buffer型変数を作成する.
 
Buffer make_xml_attr_bystr(const char *name, const char *value)
属性名 name, 文字列の属性値 value を持つ Buffer型変数を作成する.
 
int set_xml_content_list_bystr(tXML *pp, const char *str, const char *content)
set_xml_content_list_bystr() の _bystr バージョン.
 
int set_xml_node(tXML *pp, tXML *pt, const char *val)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノード対応したノードにノード名をコピーする.
 
int xml_parse_processing_node(char *pp, char **node_name, char **node_attr)
XMLのプロセッシングノードを処理する
 
void close_xml(tXML *pp)
パースエラーを起こしたツリーを強制的に正常化する.
 
void xml_attr_to_Buffer(tList *pp, Buffer *buf)
リストに保存されたノードの属性をテキストへ戻す.
 
tXML * add_xml_attr(tXML *xml, const char *attr)
xml に属性(attr)を追加する.
 
int set_xml_content_bystr(tXML *pp, const char *str, const char *val)
set_xml_content(tXML* pp, tXML* pt, char* val) の _bystr バージョン
 
tList * get_xml_attr(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードのノード属性値へのリストを altp に入れて返す.
 
double get_xml_double_content_bystr(tXML *pp, const char *str)
get_xml_double_content(tXML* pp, tXML* pt) の _bystr バージョン.
 
tXML * add_xml_attr_float(tXML *xml, const char *name, float value)
xml に属性名 name, float型実数の属性値 value を持つノードを追加する.
 
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 バージョン.
 
int replace_all_node_byid(tXML *tp, const char *src, const char *dst, int id)
XMLツリー pp内で ノードの種別が idである全てのノードの内容を srcから dstに書き換える.
 
int xml_parse_data_node(char *pp, char **data)
XMLのデータノード(その他エレメントノードなど)を処理する.
 
tXML * insert_xml_node(tXML *xml, const char *name)
XMLツリーのxml の直下(姉妹の一番上:長子)にノード(属性は指定しない)を挿入する.
 
int get_xml_int_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を int型で返す.
 
tXML * add_xml_node(tXML *xml, const char *name)
XMLツリーのxml の直下(姉妹の一番下:末っ子)にノード(属性は指定しない)を挿入する.
 
tXML * xml_parse(char *pp)
文字列のXMLデータを解釈して,tXMLのツリーを生成する.
 
tList * xml_parse_attr(char *pp)
XMLのノード属性を解釈して,リスト(tList)にする.
 
char * get_xml_char_content(tXML *pp, tXML *pt)
get_xml_content() を使用し,XML コンテンツの内容を char*型で返す.free() してはいけない.
 
tXML * find_match_xml_end_node(tXML *pp, tXML *pt)
XMLツリー pp内で XMLツリー ptと同じパターンの枝を探し,ptの最後のノードに対応する pp内のノードへのポインタを返す.
 
tList * get_xml_content_list(tXML *pp, tXML *pt)
XMLツリー pp内で XMLツリー ptと同じパターンの枝を探し,ptに一致した枝の,ptの最後のノードに対応するノードのコンテントへのポインタをリストに格納して返す.
 
int add_xml_content_area(tXML *xml, int len)
xml に空のコンテントノードを追加する.
 
void xml_close_node_Buffer(tXML *pp, Buffer *buf, int mode, int indent)
ツリー中のXMLのクローズノードのデータを元の書式に戻して Bufferに格納する.
 
int isnot_xml_name(unsigned char *pp)
XML名として不適切かどうかを大まかに判断する.
 
Buffer get_node_content(tXML *tp, const char *name, int no)
tp中のXMLデータから no番目のノード '<name>node_content</name>' のnode_contentのコピーを得る.
 
tXML * init_xml_doc(void)
XML のドキュメントヘッダを作成する.
 
int get_xml_int_attr(tXML *pp, tXML *pt, const char *attr)
get_xml_node() で検索したノードから,属性値 attrの値を int型で取り出す.
 
char * get_xml_char_attr(tXML *pp, tXML *pt, const char *attr)
get_xml_node() で検索したノードから,属性値 attrの値を char*型で取り出す.free() してはいけない.
 
int xml_parse_end_node(char *pp, char **node_name)
XMLの終了ノードを処理する.
 
Buffer make_xml_attr_bydouble(const char *name, double value)
属性名 name, double型実数の属性値 value を持つ Buffer型変数を作成する.
 
void xml_open_node_Buffer(tXML *pp, Buffer *buf, int mode, int indent)
ツリー中のXMLのオープンノードのデータを元の書式に戻して Bufferに格納する.
 
tXML * find_match_xml_endlist(tXML *pp, tXML *pt)
ツリー pp内で ツリー ptと同じパターンの枝を全て探して,その枝のptの最後のノードに対応するノードの情報をリストにして返す.
 
Buffer make_xml_attr_byint(const char *name, int value)
属性名 name, 整数の属性値 value を持つ Buffer型変数を作成する.
 
char * xml_get_node_content(tXML *node)
コンテントへのポインタを返す.free() してはいけない.
 
double get_xml_double_attr(tXML *pp, tXML *pt, const char *attr)
get_xml_node() で検索したノードから,属性値 attrの値を double型で取り出す.
 
tXML * get_xml_content(tXML *pp, tXML *pt)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後のノードに対応したノードのコンテントへのポインタを altp に入れて返す.
 
tXML * get_xml_attr_node(tXML *pp, const char *key, const char *val)
属性 key=val のノードを探し,最初に見つけたノードを返す.
 
tXML * get_xml_content_bystr(tXML *pp, const char *str)
get_xml_content(tXML* pp, tXML* pt) の _bystr バージョン
 
tList * get_xml_attr_bystr(tXML *pp, const char *str)
get_xml_attr(tXML* pp, tXML* pt, tList* at) の _bystr バージョン.
 
tXML * add_xml_content_node(tXML *xml, const char *value)
XMLツリーのxml の直下にコンテントを挿入する.
 
tXML * cmp_sisters_xml(tXML *tp, tXML *tr)
XMLノード tpの姉妹ノードが trの姉妹ノードと同じ XMLノードまたはコンテントであるかを比較する.
 
Buffer xml_inverse_parse(tXML *pp, int mode)
ppに格納された XMLデータを元の書式に戻して Bufferに格納する.xml_parse() の逆.
 
int xml_parse_content(char *pp, char **content)
XMLのコンテントを処理する.
 
tList * get_xml_node_list(tXML *pp, tXML *pt)
XMLツリー pp内で XMLツリー ptと同じパターンの枝を探し,ptに一致した枝の,ptの最後のノードに対応するノードへのポインタをリストに格納して返す.
 
tList * get_xml_node_list_bystr(tXML *pp, const char *str)
get_xml_node_list() の _bystr バージョン.
 
int set_xml_content(tXML *pp, tXML *pt, const char *val)
同じパターンの枝を探し,ptに最初に一致した枝の,ptの最後ノードに対応したのノードのコンテントを contentで置き換える.
 
int _replace_all_node_contents_rcsv(tXML *tp, const char *name, const char *src, const char *dst)
replace_all_node_content() の補助関数
 
tXML * add_xml_attr_int(tXML *xml, const char *name, int value)
xml に属性名 name, 整数の属性値 value を持つノードを追加する.