### Struct

# GLib MarkupParser

#### Description [src]

    struct GMarkupParser {
      void (* start_element) (
        GMarkupParseContext* context,
        const gchar* element_name,
        const gchar** attribute_names,
        const gchar** attribute_values,
        gpointer user_data,
        GError** error
      );;
      void (* end_element) (
        GMarkupParseContext* context,
        const gchar* element_name,
        gpointer user_data,
        GError** error
      );;
      void (* text) (
        GMarkupParseContext* context,
        const gchar* text,
        gsize text_len,
        gpointer user_data,
        GError** error
      );;
      void (* passthrough) (
        GMarkupParseContext* context,
        const gchar* passthrough_text,
        gsize text_len,
        gpointer user_data,
        GError** error
      );;
      void (* error) (
        GMarkupParseContext* context,
        GError* error,
        gpointer user_data
      );;
    }

Any of the fields in `GMarkupParser` can be `NULL`, in which case they will be ignored. Except for the `error` function, any of these callbacks can set an error; in particular the `G_MARKUP_ERROR_UNKNOWN_ELEMENT`, `G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE`, and `G_MARKUP_ERROR_INVALID_CONTENT` errors are intended to be set from these callbacks. If you set an error from a callback, `g_markup_parse_context_parse()` will report that error back to its caller.

Refer to the GMarkup documentation to understand the scope and limitations of `GMarkupParser`. In particular, it is not a full XML parser and it must not be used to process untrusted data.

###### Structure members

`start_element:` `void (* start_element) ( GMarkupParseContext* context, const gchar* element_name, const gchar** attribute_names, const gchar** attribute_values, gpointer user_data, GError** error )`

  Callback to invoke when the opening tag of an element is seen. The callback’s `attribute_names` and `attribute_values` parameters are `NULL`-terminated.

`end_element:` `void (* end_element) ( GMarkupParseContext* context, const gchar* element_name, gpointer user_data, GError** error )`

  Callback to invoke when the closing tag of an element is seen. Note that this is also called for empty tags like `<empty/>`.

`text:` `void (* text) ( GMarkupParseContext* context, const gchar* text, gsize text_len, gpointer user_data, GError** error )`

  Callback to invoke when some text is seen (text is always inside an element). Note that the text of an element may be spread over multiple calls of this function. If the `G_MARKUP_TREAT_CDATA_AS_TEXT` flag is set, this function is also called for the content of CDATA marked sections.

`passthrough:` `void (* passthrough) ( GMarkupParseContext* context, const gchar* passthrough_text, gsize text_len, gpointer user_data, GError** error )`

  Callback to invoke for comments, processing instructions and doctype declarations; if you’re re-writing the parsed document, write the passthrough text back out in the same position. If the `G_MARKUP_TREAT_CDATA_AS_TEXT` flag is not set, this function is also called for CDATA marked sections.

`error:` `void (* error) ( GMarkupParseContext* context, GError* error, gpointer user_data )`

  Callback to invoke when an error occurs.