pua_xmpp/pidf.c

Go to the documentation of this file.
00001 /*
00002  * $Id: pidf.c 1666 2007-03-02 13:40:09Z anca_vamanu $
00003  *
00004  * pua_xmpp module - presence SIP - XMPP Gateway
00005  *
00006  * Copyright (C) 2007 Voice Sistem S.R.L.
00007  *
00008  * This file is part of Kamailio, a free SIP server.
00009  *
00010  * Kamailio is free software; you can redistribute it and/or modify
00011  * it under the terms of the GNU General Public License as published by
00012  * the Free Software Foundation; either version 2 of the License, or
00013  * (at your option) any later version
00014  *
00015  * Kamailio is distributed in the hope that it will be useful,
00016  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00017  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018  * GNU General Public License for more details.
00019  *
00020  * You should have received a copy of the GNU General Public License 
00021  * along with this program; if not, write to the Free Software 
00022  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00023  *
00024  * History:
00025  * --------
00026  *  2007-03-29  initial version (anca)
00027  */
00028 /*! \file
00029  * \brief Kamailio presence gateway: SIP/SIMPLE -- XMPP
00030  */
00031 
00032 #include <stdio.h>
00033 #include <string.h>
00034 #include <stdlib.h>
00035 #include <libxml/parser.h>
00036 #include "pidf.h"
00037 
00038 xmlAttrPtr xmlNodeGetAttrByName(xmlNodePtr node, const char *name)
00039 {
00040    xmlAttrPtr attr = node->properties;
00041    while (attr) {
00042       if (xmlStrcasecmp(attr->name, (unsigned char*)name) == 0)
00043          return attr;
00044       attr = attr->next;
00045    }
00046    return NULL;
00047 }
00048 
00049 char *xmlNodeGetAttrContentByName(xmlNodePtr node, const char *name)
00050 {
00051    xmlAttrPtr attr = xmlNodeGetAttrByName(node, name);
00052    if (attr)
00053       return (char*)xmlNodeGetContent(attr->children);
00054    else
00055       return NULL;
00056 }
00057 
00058 xmlNodePtr xmlNodeGetChildByName(xmlNodePtr node, const char *name)
00059 {
00060    xmlNodePtr cur = node->children;
00061    while (cur) {
00062       if (xmlStrcasecmp(cur->name, (unsigned char*)name) == 0)
00063          return cur;
00064       cur = cur->next;
00065    }
00066    return NULL;
00067 }
00068 
00069 xmlNodePtr xmlNodeGetNodeByName(xmlNodePtr node, const char *name,
00070                                              const char *ns)
00071 {
00072    xmlNodePtr cur = node;
00073    while (cur) {
00074       xmlNodePtr match = NULL;
00075       if (xmlStrcasecmp(cur->name, (unsigned char*)name) == 0) {
00076          if (!ns || (cur->ns && xmlStrcasecmp(cur->ns->prefix,
00077                      (unsigned char*)ns) == 0))
00078             return cur;
00079       }
00080       match = xmlNodeGetNodeByName(cur->children, name, ns);
00081       if (match)
00082          return match;
00083       cur = cur->next;
00084    }
00085    return NULL;
00086 }
00087 xmlNodePtr xmlDocGetNodeByName(xmlDocPtr doc, const char *name, const char *ns)
00088 {
00089    xmlNodePtr cur = doc->children;
00090    return xmlNodeGetNodeByName(cur, name, ns);
00091 }
00092 
00093 char *xmlNodeGetNodeContentByName(xmlNodePtr root, const char *name,
00094       const char *ns)
00095 {
00096    xmlNodePtr node = xmlNodeGetNodeByName(root, name, ns);
00097    if (node)
00098       return (char*)xmlNodeGetContent(node->children);
00099    else
00100       return NULL;
00101 }
00102 
00103 

Generated on Thu May 24 08:00:52 2012 for Kamailio - The Open Source SIP Server by  doxygen 1.5.6