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: