XML abstraction layer. More...
#include "asterisk.h"#include "asterisk/xml.h"#include <libxml/parser.h>#include <libxml/tree.h>#include <libxml/xinclude.h>
Go to the source code of this file.
Defines | |
| #define | _POSIX_C_SOURCE 200112L |
Functions | |
| void | ast_xml_close (struct ast_xml_doc *doc) |
| Close an already open document and free the used structure. | |
| struct ast_xml_node * | ast_xml_find_element (struct ast_xml_node *root_node, const char *name, const char *attrname, const char *attrvalue) |
| Find a node element by name. | |
| int | ast_xml_finish (void) |
| Cleanup library allocated global data. | |
| void | ast_xml_free_attr (const char *attribute) |
| Free an attribute returned by ast_xml_get_attribute(). | |
| void | ast_xml_free_node (struct ast_xml_node *node) |
| Free node. | |
| void | ast_xml_free_text (const char *text) |
| Free a content element that was returned by ast_xml_get_text(). | |
| const char * | ast_xml_get_attribute (struct ast_xml_node *node, const char *attrname) |
| Get a node attribute by name. | |
| struct ast_xml_node * | ast_xml_get_root (struct ast_xml_doc *doc) |
| Get the document root node. | |
| const char * | ast_xml_get_text (struct ast_xml_node *node) |
| Get an element content string. | |
| int | ast_xml_init (void) |
| Initialize the XML library implementation. This function is used to setup everything needed to start working with the xml implementation. | |
| struct ast_xml_node * | ast_xml_node_get_children (struct ast_xml_node *node) |
| Get the node's children. | |
| const char * | ast_xml_node_get_name (struct ast_xml_node *node) |
| Get the name of a node. | |
| struct ast_xml_node * | ast_xml_node_get_next (struct ast_xml_node *node) |
| Get the next node in the same level. | |
| struct ast_xml_node * | ast_xml_node_get_parent (struct ast_xml_node *node) |
| Get the parent of a specified node. | |
| struct ast_xml_node * | ast_xml_node_get_prev (struct ast_xml_node *node) |
| Get the previous node in the same leve. | |
| struct ast_xml_doc * | ast_xml_open (char *filename) |
| Open an XML document. | |
XML abstraction layer.
Definition in file xml.c.
| void ast_xml_close | ( | struct ast_xml_doc * | doc | ) |
Close an already open document and free the used structure.
| doc | The document reference. |
Definition at line 73 of file xml.c.
Referenced by ast_xmldoc_load_documentation(), and xmldoc_unload_documentation().
| struct ast_xml_node* ast_xml_find_element | ( | struct ast_xml_node * | root_node, | |
| const char * | name, | |||
| const char * | attrname, | |||
| const char * | attrvalue | |||
| ) | [read] |
Find a node element by name.
| node | This is the node starting point. | |
| name | Node name to find. | |
| attrname | attribute name to match (if NULL it won't be matched). | |
| attrvalue | attribute value to match (if NULL it won't be matched). |
| NULL | if not found | |
| The | node on success. |
Definition at line 138 of file xml.c.
References ast_xml_free_attr(), ast_xml_get_attribute(), ast_xml_node_get_name(), and ast_xml_node_get_next().
Referenced by xmldoc_build_field(), and xmldoc_get_node().
00139 { 00140 struct ast_xml_node *cur; 00141 const char *attr; 00142 00143 if (!root_node) { 00144 return NULL; 00145 } 00146 00147 for (cur = root_node; cur; cur = ast_xml_node_get_next(cur)) { 00148 /* Check if the name matchs */ 00149 if (strcmp(ast_xml_node_get_name(cur), name)) { 00150 continue; 00151 } 00152 /* We need to check for a specific attribute name? */ 00153 if (!attrname || !attrvalue) { 00154 return cur; 00155 } 00156 /* Get the attribute, we need to compare it. */ 00157 if ((attr = ast_xml_get_attribute(cur, attrname))) { 00158 /* does attribute name/value matches? */ 00159 if (!strcmp(attr, attrvalue)) { 00160 ast_xml_free_attr(attr); 00161 return cur; 00162 } 00163 ast_xml_free_attr(attr); 00164 } 00165 } 00166 00167 return NULL; 00168 }
| int ast_xml_finish | ( | void | ) |
Cleanup library allocated global data.
| 0 | On success. | |
| 1 | On error. |
Definition at line 46 of file xml.c.
Referenced by xmldoc_unload_documentation().
| void ast_xml_free_attr | ( | const char * | attribute | ) |
Free an attribute returned by ast_xml_get_attribute().
| data | pointer to be freed. |
Definition at line 107 of file xml.c.
Referenced by ast_xml_find_element(), ast_xmldoc_build_seealso(), xmldoc_get_node(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_fun(), xmldoc_parse_argument(), xmldoc_parse_enumlist(), xmldoc_parse_optionlist(), xmldoc_parse_parameter(), xmldoc_parse_variable(), and xmldoc_parse_variablelist().
| void ast_xml_free_node | ( | struct ast_xml_node * | node | ) |
| void ast_xml_free_text | ( | const char * | text | ) |
Free a content element that was returned by ast_xml_get_text().
| text | text to be freed. |
Definition at line 114 of file xml.c.
Referenced by ast_xmldoc_build_seealso(), xmldoc_get_formatted(), xmldoc_parse_para(), and xmldoc_parse_variable().
| const char* ast_xml_get_attribute | ( | struct ast_xml_node * | node, | |
| const char * | attrname | |||
| ) |
Get a node attribute by name.
| node | Node where to search the attribute. | |
| attrname | Attribute name. |
| NULL | on error | |
| The | attribute value on success. |
Definition at line 121 of file xml.c.
Referenced by ast_xml_find_element(), ast_xmldoc_build_seealso(), xmldoc_get_node(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_fun(), xmldoc_parse_argument(), xmldoc_parse_enumlist(), xmldoc_parse_optionlist(), xmldoc_parse_parameter(), xmldoc_parse_variable(), and xmldoc_parse_variablelist().
| struct ast_xml_node* ast_xml_get_root | ( | struct ast_xml_doc * | doc | ) | [read] |
Get the document root node.
| doc | Document reference |
| NULL | on error | |
| The | root node on success. |
Definition at line 84 of file xml.c.
Referenced by ast_xmldoc_load_documentation(), and xmldoc_get_node().
| const char* ast_xml_get_text | ( | struct ast_xml_node * | node | ) |
Get an element content string.
| node | Node from where to get the string. |
| NULL | on error. | |
| The | text content of node. |
Definition at line 170 of file xml.c.
Referenced by ast_xmldoc_build_seealso(), xmldoc_get_formatted(), xmldoc_parse_para(), and xmldoc_parse_variable().
| int ast_xml_init | ( | void | ) |
Initialize the XML library implementation. This function is used to setup everything needed to start working with the xml implementation.
| 0 | On success. | |
| 1 | On error. |
Definition at line 39 of file xml.c.
Referenced by ast_xmldoc_load_documentation().
| struct ast_xml_node* ast_xml_node_get_children | ( | struct ast_xml_node * | node | ) | [read] |
Get the node's children.
Definition at line 184 of file xml.c.
Referenced by ast_xmldoc_build_arguments(), ast_xmldoc_build_seealso(), ast_xmldoc_build_syntax(), xmldoc_build_field(), xmldoc_get_formatted(), xmldoc_get_node(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_fun(), xmldoc_has_inside(), xmldoc_has_nodes(), xmldoc_has_specialtags(), xmldoc_parse_argument(), xmldoc_parse_cmd_enumlist(), xmldoc_parse_enum(), xmldoc_parse_enumlist(), xmldoc_parse_option(), xmldoc_parse_optionlist(), xmldoc_parse_para(), xmldoc_parse_parameter(), xmldoc_parse_specialtags(), xmldoc_parse_variable(), and xmldoc_parse_variablelist().
| const char* ast_xml_node_get_name | ( | struct ast_xml_node * | node | ) |
Get the name of a node.
Definition at line 179 of file xml.c.
Referenced by ast_xml_find_element(), ast_xmldoc_build_arguments(), ast_xmldoc_build_seealso(), ast_xmldoc_build_syntax(), ast_xmldoc_load_documentation(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_fun(), xmldoc_has_inside(), xmldoc_has_nodes(), xmldoc_has_specialtags(), xmldoc_parse_cmd_enumlist(), xmldoc_parse_enumlist(), xmldoc_parse_option(), xmldoc_parse_optionlist(), xmldoc_parse_para(), xmldoc_parse_parameter(), xmldoc_parse_specialtags(), xmldoc_parse_variable(), and xmldoc_parse_variablelist().
| struct ast_xml_node* ast_xml_node_get_next | ( | struct ast_xml_node * | node | ) | [read] |
Get the next node in the same level.
Definition at line 189 of file xml.c.
Referenced by ast_xml_find_element(), ast_xmldoc_build_arguments(), ast_xmldoc_build_seealso(), ast_xmldoc_build_syntax(), xmldoc_get_formatted(), xmldoc_get_syntax_cmd(), xmldoc_get_syntax_fun(), xmldoc_has_inside(), xmldoc_has_nodes(), xmldoc_has_specialtags(), xmldoc_parse_argument(), xmldoc_parse_cmd_enumlist(), xmldoc_parse_enum(), xmldoc_parse_enumlist(), xmldoc_parse_option(), xmldoc_parse_optionlist(), xmldoc_parse_para(), xmldoc_parse_parameter(), xmldoc_parse_specialtags(), xmldoc_parse_variable(), and xmldoc_parse_variablelist().
| struct ast_xml_node* ast_xml_node_get_parent | ( | struct ast_xml_node * | node | ) | [read] |
| struct ast_xml_node* ast_xml_node_get_prev | ( | struct ast_xml_node * | node | ) | [read] |
| struct ast_xml_doc* ast_xml_open | ( | char * | filename | ) | [read] |
Open an XML document.
| filename | Document path. |
| NULL | on error. | |
| The | ast_xml_doc reference to the open document. |
Definition at line 53 of file xml.c.
Referenced by ast_xmldoc_load_documentation().
00054 { 00055 xmlDoc *doc; 00056 00057 if (!filename) { 00058 return NULL; 00059 } 00060 00061 doc = xmlReadFile(filename, NULL, XML_PARSE_RECOVER); 00062 if (doc) { 00063 /* process xinclude elements. */ 00064 if (xmlXIncludeProcess(doc) < 0) { 00065 xmlFreeDoc(doc); 00066 return NULL; 00067 } 00068 } 00069 00070 return (struct ast_xml_doc *) doc; 00071 }
1.6.2