Added a first attempt for XML embedding in the main core XML.
[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_print ("%p\n", xml);
39
40   gtk_signal_connect (GTK_OBJECT (xml), "object_loaded", xml_loaded, xml);
41
42   ret = gst_xml_parse_file(xml, "xmlTest.gst", NULL);
43   g_assert (ret == TRUE);
44
45   bin = gst_xml_get_element(xml, "bin");
46   g_assert (bin != NULL);
47
48   gst_element_set_state(bin, GST_STATE_PLAYING);
49
50   playing = TRUE;
51
52   while (gst_bin_iterate(GST_BIN(bin)));
53
54   gst_element_set_state(bin, GST_STATE_NULL);
55
56   exit(0);
57 }
58