summaryrefslogtreecommitdiff
path: root/main/xml.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/xml.c')
-rw-r--r--main/xml.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/main/xml.c b/main/xml.c
index 36e7dd812..0f93abc54 100644
--- a/main/xml.c
+++ b/main/xml.c
@@ -23,6 +23,7 @@
#include "asterisk.h"
#include "asterisk/xml.h"
+#include "asterisk/logger.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
@@ -67,6 +68,25 @@ struct ast_xml_doc *ast_xml_open(char *filename)
return (struct ast_xml_doc *) doc;
}
+struct ast_xml_doc *ast_xml_read_memory(char *buffer, size_t size)
+{
+ xmlDoc *doc;
+
+ if (!buffer) {
+ return NULL;
+ }
+
+ if (!(doc = xmlParseMemory(buffer, (int) size))) {
+ /* process xinclude elements. */
+ if (xmlXIncludeProcess(doc) < 0) {
+ xmlFreeDoc(doc);
+ return NULL;
+ }
+ }
+
+ return (struct ast_xml_doc *) doc;
+}
+
void ast_xml_close(struct ast_xml_doc *doc)
{
if (!doc) {
@@ -164,6 +184,16 @@ struct ast_xml_node *ast_xml_find_element(struct ast_xml_node *root_node, const
return NULL;
}
+struct ast_xml_ns *ast_xml_find_namespace(struct ast_xml_doc *doc, struct ast_xml_node *node, const char *ns_name) {
+ xmlNsPtr ns = xmlSearchNs((xmlDocPtr) doc, (xmlNodePtr) node, (xmlChar *) ns_name);
+ return (struct ast_xml_ns *) ns;
+}
+
+const char *ast_xml_get_ns_href(struct ast_xml_ns *ns)
+{
+ return (const char *) ((xmlNsPtr) ns)->href;
+}
+
const char *ast_xml_get_text(struct ast_xml_node *node)
{
if (!node) {