static void soap_sax_startElementNs (gpointer _ctxt, const xmlChar *localname, const xmlChar *prefix, const xmlChar *uri, gint nb_namespaces, const xmlChar **namespaces, gint nb_attributes, gint nb_defaulted, const xmlChar **attributes) { xmlParserCtxt *ctxt = _ctxt; ESoapMessagePrivate *priv = ctxt->_private; gchar *fname; xmlSAX2StartElementNs (ctxt, localname, prefix, uri, nb_namespaces, namespaces, nb_attributes, nb_defaulted, attributes); /* steal_node can contain multiple node name separated by " " */ if (priv->steal_node && *priv->steal_node) { gchar **prop = g_strsplit (priv->steal_node, " ", 0); gint i = 0; gboolean isnode = FALSE; while (prop[i]) { if (strcmp ((const gchar *) localname, prop[i]) == 0) { isnode = TRUE; break; } i++; } g_strfreev (prop); if (!isnode) return; } else return; fname = g_build_filename (priv->steal_dir, "XXXXXX", NULL); priv->steal_fd = g_mkstemp (fname); if (priv->steal_fd != -1) { if (priv->steal_base64) { gchar *enc = g_base64_encode ((guchar *) fname, strlen (fname)); xmlSAX2Characters (ctxt, (xmlChar *) enc, strlen (enc)); g_free (enc); } else xmlSAX2Characters (ctxt, (xmlChar *) fname, strlen (fname)); } g_free (fname); }
/* sax handler called when an element start tag is found * this is used to parse the cmml start tag */ static void gst_cmml_parser_parse_start_element_ns (xmlParserCtxt * ctxt, const xmlChar * name, const xmlChar * prefix, const xmlChar * URI, int nb_preferences, const xmlChar ** namespaces, int nb_attributes, int nb_defaulted, const xmlChar ** attributes) { GstCmmlParser *parser = (GstCmmlParser *) ctxt->_private; xmlSAX2StartElementNs (ctxt, name, prefix, URI, nb_preferences, namespaces, nb_attributes, nb_defaulted, attributes); if (parser->mode == GST_CMML_PARSER_ENCODE) if (!xmlStrcmp (name, (xmlChar *) "cmml")) if (parser->preamble_callback) /* FIXME: parse attributes */ gst_cmml_parser_parse_preamble (parser, NULL); }