Tizen Native API
4.0
|
Simplistic relaxed SAX-like XML parser.
This parser is far from being compliant with XML standard, but will do for most XMLs out there. If you know that your format is simple and will not vary in future with strange corner cases, then you can use it safely.
The parser is SAX like, that is, it will tokenize contents and call you back so you can take some action. No contents are allocated during this parser work and it's not recursive, so you can use it with a very large document without worries.
It will not validate the document anyhow, neither it will create a tree hierarchy. That's up to you.
Accordingly to XML, open tags may contain attributes. This parser will not tokenize this. If you want you can use eina_simple_xml_tag_attributes_find() and then eina_simple_xml_attributes_parse().
For more information, see this example.
Functions | |
Eina_Bool | eina_simple_xml_parse (const char *buf, unsigned buflen, Eina_Bool strip, Eina_Simple_XML_Cb func, const void *data) |
Parses a section of XML string text. | |
const char * | eina_simple_xml_tag_attributes_find (const char *buf, unsigned buflen) |
Given the contents of a tag, find where the attributes start. | |
Eina_Bool | eina_simple_xml_attributes_parse (const char *buf, unsigned buflen, Eina_Simple_XML_Attribute_Cb func, const void *data) |
Given a buffer with xml attributes, parse them to key=value pairs. | |
Eina_Bool | eina_simple_xml_attribute_w3c_parse (const char *buf, Eina_Simple_XML_Attribute_Cb func, const void *data) |
Given a buffer with the xml value of an attributes, parse them to key:value pairs. | |
Eina_Simple_XML_Attribute * | eina_simple_xml_attribute_new (Eina_Simple_XML_Node_Tag *parent, const char *key, const char *value) |
Creates (and appends) new attribute to tag. | |
void | eina_simple_xml_attribute_free (Eina_Simple_XML_Attribute *attr) |
Removes attribute from parent and delete it. | |
Eina_Simple_XML_Node_Tag * | eina_simple_xml_node_tag_new (Eina_Simple_XML_Node_Tag *parent, const char *name) |
Creates new tag. If parent is provided, it is automatically appended. | |
void | eina_simple_xml_node_tag_free (Eina_Simple_XML_Node_Tag *tag) |
Removes tag from parent and delete it. | |
Eina_Simple_XML_Node_Data * | eina_simple_xml_node_data_new (Eina_Simple_XML_Node_Tag *parent, const char *contents, size_t length) |
Creates new data. If parent is provided, it is automatically appended. | |
void | eina_simple_xml_node_data_free (Eina_Simple_XML_Node_Data *node) |
Removes data from parent and delete it. | |
Eina_Simple_XML_Node_CData * | eina_simple_xml_node_cdata_new (Eina_Simple_XML_Node_Tag *parent, const char *contents, size_t length) |
Creates new cdata. If parent is provided, it is automatically appended. | |
void | eina_simple_xml_node_cdata_free (Eina_Simple_XML_Node_Data *node) |
Removes cdata from parent and delete it. | |
Eina_Simple_XML_Node_Doctype_Child * | eina_simple_xml_node_doctype_child_new (Eina_Simple_XML_Node_Tag *parent, const char *contents, size_t length) |
Creates new doctype child. If parent is provided, it is automatically appended. | |
void | eina_simple_xml_node_doctype_child_free (Eina_Simple_XML_Node_Data *node) |
Removes doctype child from parent and delete it. | |
Eina_Simple_XML_Node_Processing * | eina_simple_xml_node_processing_new (Eina_Simple_XML_Node_Tag *parent, const char *contents, size_t length) |
Creates new processing. If parent is provided, it is automatically appended. | |
void | eina_simple_xml_node_processing_free (Eina_Simple_XML_Node_Data *node) |
Removes processing from parent and delete it. | |
Eina_Simple_XML_Node_Doctype * | eina_simple_xml_node_doctype_new (Eina_Simple_XML_Node_Tag *parent, const char *contents, size_t length) |
Creates new doctype. If parent is provided, it is automatically appended. | |
void | eina_simple_xml_node_doctype_free (Eina_Simple_XML_Node_Data *node) |
Removes doctype from parent and delete it. | |
Eina_Simple_XML_Node_Comment * | eina_simple_xml_node_comment_new (Eina_Simple_XML_Node_Tag *parent, const char *contents, size_t length) |
Creates new comment. If parent is provided, it is automatically appended. | |
void | eina_simple_xml_node_comment_free (Eina_Simple_XML_Node_Data *node) |
Removes comment from parent and delete it. | |
Eina_Simple_XML_Node_Root * | eina_simple_xml_node_load (const char *buf, unsigned buflen, Eina_Bool strip) |
Loads a XML node tree based on the given string. | |
void | eina_simple_xml_node_root_free (Eina_Simple_XML_Node_Root *root) |
Frees node tree build with eina_simple_xml_node_load() | |
char * | eina_simple_xml_node_dump (Eina_Simple_XML_Node *node, const char *indent) |
Converts the node tree under the given element to a XML string. | |
Typedefs | |
typedef struct _Eina_Simple_XML_Node_Data | Eina_Simple_XML_Node_Doctype_Child |
Typedef Documentation
typedef struct _Eina_Simple_XML_Node_Data Eina_Simple_XML_Node_Doctype_Child |
- Since (EFL) :
- 1.8
Enumeration Type Documentation
a simple XML type.
- Enumerator:
Function Documentation
void eina_simple_xml_attribute_free | ( | Eina_Simple_XML_Attribute * | attr | ) |
Removes attribute from parent and delete it.
- Parameters:
-
attr attribute to release memory.
- Since :
- 2.3
Eina_Simple_XML_Attribute* eina_simple_xml_attribute_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | key, | ||
const char * | value | ||
) |
Creates (and appends) new attribute to tag.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the attribute will be appended to attributes list. key Null-terminated string. Must not be NULL
.value Null-terminated string. If NULL
, the empty string will be used.
- Returns:
- Newly allocated memory or
NULL
on error. This memory should be released with eina_simple_xml_attribute_free() or indirectly with eina_simple_xml_node_tag_free().
- Since :
- 2.3
Eina_Bool eina_simple_xml_attribute_w3c_parse | ( | const char * | buf, |
Eina_Simple_XML_Attribute_Cb | func, | ||
const void * | data | ||
) |
Given a buffer with the xml value of an attributes, parse them to key:value pairs.
- Parameters:
-
buf the input string. Need to contain \0 terminator. func what to call back while parse to do some action. The first parameter is the given user data, the second is the key (null-terminated) and the last is the value (null terminated). These strings should not be modified and reference is just valid until the function return. data data to pass to the callback function.
- Returns:
- EINA_TRUE on success or EINA_FALSE if it was aborted by user or parsing error.
- Since (EFL) :
- 1.14
- Since :
- 3.0
Eina_Bool eina_simple_xml_attributes_parse | ( | const char * | buf, |
unsigned | buflen, | ||
Eina_Simple_XML_Attribute_Cb | func, | ||
const void * | data | ||
) |
Given a buffer with xml attributes, parse them to key=value pairs.
- Parameters:
-
buf The input string. May not contain \0 terminator. buflen The input string size. func What to call back while parse to do some action. The first parameter is the given user data, the second is the key (null-terminated) and the last is the value (null terminated). These strings should not be modified and reference is just valid until the function return. data Data to pass to the callback function.
- Returns:
- EINA_TRUE on success, or EINA_FALSE if it was aborted by user or parsing error.
- Since :
- 2.3
- Examples:
- eina_simple_xml_parser_01.c.
void eina_simple_xml_node_cdata_free | ( | Eina_Simple_XML_Node_Data * | node | ) |
Removes cdata from parent and delete it.
- Parameters:
-
node to release memory.
- Since :
- 2.3
Eina_Simple_XML_Node_CData* eina_simple_xml_node_cdata_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | contents, | ||
size_t | length | ||
) |
Creates new cdata. If parent is provided, it is automatically appended.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the cdata will be appended to children list. contents String to be used. Must not be NULL
.length Size in bytes of content.
- Returns:
- Newly allocated memory or
NULL
on error. This memory should be released with eina_simple_xml_node_cdata_free() or indirectly with eina_simple_xml_node_tag_free() of the parent.
- Since :
- 2.3
void eina_simple_xml_node_comment_free | ( | Eina_Simple_XML_Node_Data * | node | ) |
Removes comment from parent and delete it.
- Parameters:
-
node comment to release memory.
- Since :
- 2.3
Eina_Simple_XML_Node_Comment* eina_simple_xml_node_comment_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | contents, | ||
size_t | length | ||
) |
Creates new comment. If parent is provided, it is automatically appended.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the comment will be appended to children list. contents String to be used. Must not be NULL
.length Size in bytes of contents.
- Returns:
- Newly allocated memory or
NULL
on error. This memory should be released with eina_simple_xml_node_comment_free() or indirectly with eina_simple_xml_node_tag_free() of the parent.
- Since :
- 2.3
void eina_simple_xml_node_data_free | ( | Eina_Simple_XML_Node_Data * | node | ) |
Removes data from parent and delete it.
- Parameters:
-
node to release memory.
- Since :
- 2.3
Eina_Simple_XML_Node_Data* eina_simple_xml_node_data_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | contents, | ||
size_t | length | ||
) |
Creates new data. If parent is provided, it is automatically appended.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the data will be appended to children list. contents String to be used. Must not be NULL
.length Size in bytes of contents.
- Returns:
- Newly allocated memory or NULL on error. This memory should be released with eina_simple_xml_node_data_free() or indirectly with eina_simple_xml_node_tag_free() of the parent.
- Since :
- 2.3
void eina_simple_xml_node_doctype_child_free | ( | Eina_Simple_XML_Node_Data * | node | ) |
Removes doctype child from parent and delete it.
- Parameters:
-
node to release memory.
- Since (EFL) :
- 1.8
- Since :
- 2.3
Eina_Simple_XML_Node_Doctype_Child* eina_simple_xml_node_doctype_child_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | contents, | ||
size_t | length | ||
) |
Creates new doctype child. If parent is provided, it is automatically appended.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the doctype child will be appended to children list. contents String to be used. Must not be NULL
.length size in bytes of content.
- Returns:
- Newly allocated memory or
NULL
on error. This memory should be released with eina_simple_xml_node_doctype_child_free() or indirectly with eina_simple_xml_node_tag_free() of the parent.
- Since (EFL) :
- 1.8
- Since :
- 2.3
void eina_simple_xml_node_doctype_free | ( | Eina_Simple_XML_Node_Data * | node | ) |
Removes doctype from parent and delete it.
- Parameters:
-
node doctype to release memory.
- Since :
- 2.3
Eina_Simple_XML_Node_Doctype* eina_simple_xml_node_doctype_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | contents, | ||
size_t | length | ||
) |
Creates new doctype. If parent is provided, it is automatically appended.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the doctype will be appended to children list. contents String to be used. Must not be NULL
.length Size in bytes of contents.
- Returns:
- Newly allocated memory or
NULL
on error. This memory should be released with eina_simple_xml_node_doctype_free() or indirectly with eina_simple_xml_node_tag_free() of the parent.
- Since :
- 2.3
char* eina_simple_xml_node_dump | ( | Eina_Simple_XML_Node * | node, |
const char * | indent | ||
) |
Converts the node tree under the given element to a XML string.
- Parameters:
-
node The base node to convert. indent Indentation string, or NULL
to disable it.
- Returns:
NULL
on errors, or a newly allocated string on success.
- Since :
- 2.3
Eina_Simple_XML_Node_Root* eina_simple_xml_node_load | ( | const char * | buf, |
unsigned | buflen, | ||
Eina_Bool | strip | ||
) |
Loads a XML node tree based on the given string.
- Parameters:
-
buf The input string. May not contain \0 terminator. buflen The input string size. strip Whenever this parser should strip leading and trailing whitespace.
- Returns:
- Document root with children tags, or
NULL
on errors. Document with errors may return partial tree instead ofNULL
, we'll do our best to avoid returning nothing.
- Since :
- 2.3
void eina_simple_xml_node_processing_free | ( | Eina_Simple_XML_Node_Data * | node | ) |
Removes processing from parent and delete it.
- Parameters:
-
node processing to release memory.
- Since :
- 2.3
Eina_Simple_XML_Node_Processing* eina_simple_xml_node_processing_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | contents, | ||
size_t | length | ||
) |
Creates new processing. If parent is provided, it is automatically appended.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the processing will be appended to children list. contents String to be used. Must not be NULL
.length Size in bytes of contents.
- Returns:
- Newly allocated memory or
NULL
on error. This memory should be released with eina_simple_xml_node_processing_free() or indirectly with eina_simple_xml_node_tag_free() of the parent.
- Since :
- 2.3
void eina_simple_xml_node_root_free | ( | Eina_Simple_XML_Node_Root * | root | ) |
Frees node tree build with eina_simple_xml_node_load()
- Parameters:
-
root Memory returned by eina_simple_xml_node_load()
- Since :
- 2.3
void eina_simple_xml_node_tag_free | ( | Eina_Simple_XML_Node_Tag * | tag | ) |
Removes tag from parent and delete it.
- Parameters:
-
tag to release memory.
- Since :
- 2.3
Eina_Simple_XML_Node_Tag* eina_simple_xml_node_tag_new | ( | Eina_Simple_XML_Node_Tag * | parent, |
const char * | name | ||
) |
Creates new tag. If parent is provided, it is automatically appended.
- Parameters:
-
parent If provided, will be set in the resulting structure as well as the tag will be appended to children list. name Null-terminated string. Must not be NULL
.
- Returns:
- Newly allocated memory or
NULL
on error. This memory should be released with eina_simple_xml_node_tag_free() or indirectly with eina_simple_xml_node_tag_free() of the parent.
- Since :
- 2.3
Eina_Bool eina_simple_xml_parse | ( | const char * | buf, |
unsigned | buflen, | ||
Eina_Bool | strip, | ||
Eina_Simple_XML_Cb | func, | ||
const void * | data | ||
) |
Parses a section of XML string text.
- Parameters:
-
buf The input string. May not contain \0 terminator. buflen The input string size. strip Whenever this parser should strip leading and trailing whitespace. These whitespace will still be issued, but as type EINA_SIMPLE_XML_IGNORED. func What to call back while parse to do some action. The first parameter is the given user data, the second is the token type, the third is the pointer to content start (it's not a NULL terminated string!), the forth is where this content is located inside buf (does not include tag start, for instance "<!DOCTYPE value>" the offset points at "value"), the fifth is the size of the content. Whenever this function return EINA_FALSE the parser will abort. data What to give as context to func.
- Returns:
- EINA_TRUE on success, or EINA_FALSE if it was aborted by user or parsing error.
- Since :
- 2.3
- Examples:
- eina_simple_xml_parser_01.c.
const char* eina_simple_xml_tag_attributes_find | ( | const char * | buf, |
unsigned | buflen | ||
) |
Given the contents of a tag, find where the attributes start.
- Parameters:
-
buf The input string. May not contain \0 terminator. buflen The input string size.
- Returns:
- Pointer to the start of attributes, it can be used to feed eina_simple_xml_attributes_parse().
NULL
is returned if no attributes were found.
The tag contents is returned by eina_simple_xml_parse() when type is EINA_SIMPLE_XML_OPEN or EINA_SIMPLE_XML_OPEN_EMPTY.
- Since :
- 2.3
- Examples:
- eina_simple_xml_parser_01.c.