/*
基本情報技術者試験 平成13年度・秋期・午後 問6
BohYoh Shibata PREPARATION
*/
#define MAXELMNUM 256
typedef struct {
char *tag;
int depth;
char *value;
} ELEMENT;
char *parse_ml_data(char *, int);
ELEMENT elmtbl[MAXELMNUM];
int elmnum = 0;
void parse_ml_string(char *mlstr)
{
while (*mlstr != '\0') {
mlstr = parse_ml_data(mlstr + 1, 1);
}
}
char *parse_ml_data(char *mlstr, int level)
{
/* 開始タグ処理 */
elmtbl[elmnum].tag = mlstr ;
elmtbl[elmnum].depth = level;
for (; *mlstr != '>'; mlstr++);
*mlstr = '\0';
/* タグの値処理 */
elmtbl[elmnum].value = mlstr + 1 ;
for (mlstr++; *mlstr != '<'; mlstr++);
*mlstr = '\0';
elmnum++ ;
/* 下位のタグ構造処理 */
while ( *(mlstr + 1) != '/' )
mlstr = parse_ml_data(mlstr + 1, level + 1);
/* 終了タグ処理 */
for (mlstr += 2; *mlstr != '>'; mlstr++);
return mlstr + 1;
}