Simple XML Subset Parser parses a subset of XML. The "GMarkup" parser is intended to parse a simple markup format that's a subset of XML. This is a small, efficient, easy-to-use parser. It should not be used if you expect to interoperate with other applications generating full-scale XML. However, it's very useful for application data files, config files, etc. where you know your application will be the only one writing the file. Full-scale XML parsers should be able to parse the subset used by GMarkup, so you can easily migrate to full-scale XML at a later time if the need arises. GMarkup is not guaranteed to signal an error on all invalid XML; the parser may accept documents that an XML parser would not. However, invalid XML documents are not considered valid GMarkup documents. Simplifications to XML include: Only UTF-8 encoding is allowed. No user-defined entities. Processing instructions, comments and the doctype declaration are "passed through" but are not interpreted in any way. No DTD or validation. The markup format does support: Elements Attributes 5 standard entities: & < > " ' Character references Sections marked as CDATA Error codes returned by markup parsing. @G_MARKUP_ERROR_BAD_UTF8: text being parsed was not valid UTF-8 @G_MARKUP_ERROR_EMPTY: document contained nothing, or only whitespace @G_MARKUP_ERROR_PARSE: document was ill-formed @G_MARKUP_ERROR_UNKNOWN_ELEMENT: error should be set by #GMarkupParser functions; element wasn't known @G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE: error should be set by #GMarkupParser functions; attribute wasn't known @G_MARKUP_ERROR_INVALID_CONTENT: error should be set by #GMarkupParser functions; something was wrong with contents of the document, e.g. invalid attribute value Error domain for markup parsing. Errors in this domain will be from the #GMarkupError enumeration. See #GError for information on error domains. There are no flags right now. Pass "0" for the flags argument to all functions. @G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG: flag you should not use. A parse context is used to parse a stream of bytes that you expect to contain marked-up text. See g_markup_parse_context_new(), #GMarkupParser, and so on for more details. 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. @start_element: Callback to invoke when the opening tag of an element is seen. @end_element: Callback to invoke when the closing tag of an element is seen @text: Callback to invoke when some text is seen (text is always inside an element) @passthrough: 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 @error: Callback to invoke when an error occurs @text: @length: @Returns: @format: @Varargs: @Returns: @format: @args: @Returns: @context: @error: @Returns: @context: @context: @line_number: @char_number: @context: @Returns: @parser: @flags: @user_data: @user_data_dnotify: @Returns: @context: @text: @text_len: @error: @Returns: