html - 簡易 HTML パーサ ------------------------------------------------------------------------------ HTMLState typedef enum { HTML_NORMAL, HTML_PAR, HTML_BR, HTML_HR, HTML_HREF, HTML_IMG, HTML_FONT, HTML_PRE, HTML_UNKNOWN, HTML_CONV_FAILED, HTML_ERR, HTML_EOF } HTMLState; HTML パーサの現在の状態を表す enum です。 ------------------------------------------------------------------------------ HTMLParser struct _HTMLParser { FILE *fp; CodeConverter *conv; GHashTable *symbol_table; GString *str; GString *buf; gchar *bufp; HTMLState state; gchar *href; gboolean newline; gboolean empty_line; gboolean space; gboolean pre; }; HTML パーサの各種情報を格納する構造体です。 ------------------------------------------------------------------------------ HTMLAttr struct _HTMLAttr { gchar *name; gchar *value; }; HTML タグの各属性を表します。 ------------------------------------------------------------------------------ HTMLTag struct _HTMLTag { gchar *name; GList *attr; }; HTML タグを表します。タグ名と属性リストから構成されます。 ------------------------------------------------------------------------------ HTMLParser *html_parser_new (FILE *fp, CodeConverter *conv); HTML パーサオブジェクトを作成します。 HTML ファイルストリーム fp と HTML ファイルのエンコーディングにあわせた CodeCoverter conv を渡します。 返った値は html_parser_destroy() で解放する必要があります。 fp: HTML ファイルストリーム conv: CodeConverter 構造体へのポインタ 戻り値: 新規 HTMLParser 構造体へのポインタ ------------------------------------------------------------------------------ void html_parser_destroy (HTMLParser *parser); HTMLParser オブジェクトを解放します。 parser: HTMLParser 構造体へのポインタ ------------------------------------------------------------------------------ const gchar *html_parse (HTMLParser *parser); HTML ファイルから必要であれば1行読み込み、パースしてプレーンテキストに 変換した文字列を返します。 返った文字列は parser が保持しているため解放できません。 parser: HTMLParser 構造体へのポインタ 戻り値: プレーンテキストに変換された文字列 ファイルの終端に達した場合 NULL