myxml.h

最終更新:2009/11/30

myxml.h

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_ */
Copyright (C) KAKU PROJECT (2009)KAKU PROJECT (2009)