sync with the current CVS glib API
[platform/upstream/gstreamer.git] / examples / xml / runxml.c
1 #include <stdlib.h>
2 #include <gst/gst.h>
3
4 gboolean playing;
5
6 static void
7 xml_loaded (GstXML *xml, GstObject *object, xmlNodePtr self, gpointer data)
8 {
9   xmlNodePtr children = self->xmlChildrenNode;
10
11   while (children) {
12     if (!strcmp (children->name, "comment")) {
13       xmlNodePtr nodes = children->xmlChildrenNode;
14
15       while (nodes) {
16         if (!strcmp (nodes->name, "text")) {
17           gchar *name = g_strdup (xmlNodeGetContent (nodes));
18           g_print ("object %s loaded with comment '%s'\n",
19                       gst_object_get_name (object), name);
20         }
21         nodes = nodes->next;
22       }
23     }
24     children = children->next;
25   }
26 }
27
28 int main(int argc,char *argv[])
29 {
30   GstXML *xml;
31   GstElement *bin;
32   gboolean ret;
33
34   gst_init(&argc,&argv);
35
36   xml = gst_xml_new ();
37
38   g_signal_connect (G_OBJECT (xml), "object_loaded", xml_loaded, xml);
39
40   ret = gst_xml_parse_file(xml, "xmlTest.gst", NULL);
41   g_assert (ret == TRUE);
42
43   bin = gst_xml_get_element(xml, "bin");
44   g_assert (bin != NULL);
45
46   gst_element_set_state(bin, GST_STATE_PLAYING);
47
48   while (gst_bin_iterate(GST_BIN(bin)));
49
50   gst_element_set_state(bin, GST_STATE_NULL);
51
52   exit(0);
53 }
54