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