pua_xmpp/pidf.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
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