myxml.h
最終更新:2009/11/30
001: /* myxml.c 002: * APR-UTIL の XML API を使うサンプル 003: * ・getElementsByTagName と getElementById 004: */ 005: 006: #ifndef _MYXML_H_ 007: #define _MYXML_H_ 008: 009: #ifndef APR_TABLES_H 010: #include "apr_tables.h" 011: #endif 012: 013: #ifndef APR_STRINGS_H 014: #include "apr_strings.h" 015: #endif 016: 017: #ifndef APR_XML_H 018: #include "apr_xml.h" 019: #endif 020: 021: /* 022: * apr_xml_elem* の配列のイテレーション 023: * func は配列内の apr_xml_elem* を処理するコールバック関数 024: * void func (void *func_ctx, apr_xml_elem * elem); 025: */ 026: 027: void my_apr_xml_elem_array_do( 028: apr_array_header_t *arr 029: , void *func 030: , void *func_ctx 031: ); 032: 033: /* 034: * エレメントのCDATAを返す関数 035: * 返り値: 036: * エレメントのCDATAの文字列 037: * メモ: 038: * n->first_cdata.first から next メンバ変数をたどって text メンバ変数の 039: * 文字列をコンカテネートする。 040: */ 041: 042: char * concat_cdata( 043: apr_xml_elem *n /* IN: 対象エレメント */ 044: , apr_pool_t *pool /* IN: メモリプール */ 045: ); 046: 047: /* 048: * エレメントから、指定した名前のアトリビュートの値を検索する関数 049: */ 050: 051: char const * getAttribute( 052: apr_xml_elem *n /* IN: 対象エレメント */ 053: , char *aname /* IN: 検索アトリビュート名 */ 054: ); 055: 056: /* 指定エレメント配下の、検索タグ名にマッチするエレメント群を検索する関数 057: * 戻り値: 058: * 検索タグ名にマッチしたエレメントを保持する配列 059: * 子エレメントが存在しない場合はヌル。 060: */ 061: 062: apr_array_header_t *getElementsByTagNameFromElement( 063: apr_pool_t *pool /* IN: メモリプール */ 064: , apr_xml_elem *n /* IN: 対象エレメント */ 065: , char *tagname /* IN: 検索タグ名 */ 066: ); 067: 068: /* XMLドキュメント内の検索タグ名にマッチしたエレメント群を検索する関数 069: * 戻り値: 070: * 検索タグ名にマッチしたエレメントを保持する配列 071: */ 072: 073: apr_array_header_t *getElementsByTagName( 074: apr_pool_t *pool /* IN: メモリプール */ 075: , apr_xml_doc *doc /* IN: 対象XMLドキュメント */ 076: , char *tagname /* IN: 検索タグ名 */ 077: ); 078: 079: /* XMLドキュメント内の検索IDにマッチしたエレメントを検索する関数 080: * 戻り値: 081: * 検索IDにマッチしたエレメント 082: */ 083: 084: apr_xml_elem * getElementById ( 085: apr_xml_doc *doc /* IN: 対象XMLドキュメント */ 086: , char *id /* IN: 検索ID */ 087: ); 088: 089: /* エレメントの表示。指定されたエレメントのタグ名、アトリビュート、 090: * 直下のCDATAの表示のみ。NS 非対応。 091: * 戻り値: 092: * なし 093: */ 094: 095: void printElement ( 096: apr_file_t *out /* IN: 出力先ファイルポインタ */ 097: , apr_xml_elem *elem /* IN: 表示対象エレメント */ 098: ); 099: 100: /* エレメントの表示。指定されたエレメントのタグ名、アトリビュート、 101: * 直下のCDATAの表示に加え、子エレメント(child)と続くエレメントも再帰的に表示。 102: * 戻り値: 103: * なし 104: */ 105: void printElementRec ( 106: apr_file_t *out /* IN: 出力先ファイルポインタ */ 107: , apr_xml_elem *elem /* IN: 表示対象エレメント */ 108: ); 109: 110: #endif /* _MYXML_H_ */
![]() | KAKU PROJECT (2009) |