Ejemplo n.º 1
0
int main( int argc, char **argv )
{
	FILE *fp = 0;
	if( argc < 2 )
	{
		fprintf( stderr, "Usage : %s filename.\n", argv[0] );
		exit( -1 );
	}
	fp = fopen( argv[1], "r" );
	if( fp == 0 )
	{
		fprintf( stderr, "Unable to open %s.\n", argv[1] );
		exit( -1 );
	}

	{
		struct xmlDocument *doc = xmldoc_new( fp );
		xml_seterrorfn( error_log );
		xml_parse( doc );
		dump_node( doc->root );
		xmldoc_free( doc );
	}
	fclose( fp );

	return 0;
}
int SongMetaData_parse_DIDL(struct SongMetaData *object, const char *xml) {
	struct xmldoc *doc = xmldoc_parsexml(xml);
	if (doc == NULL)
		return 0;

	// ... did I mention that I hate navigating XML documents ?
	struct xmlelement *didl_node = find_element_in_doc(doc, "DIDL-Lite");
	if (didl_node == NULL)
		return 0;

	struct xmlelement *item_node = find_element_in_element(didl_node,
							       "item");
	if (item_node == NULL)
		return 0;

	struct xmlelement *value_node = NULL;
	value_node = find_element_in_element(item_node, "dc:title");
	if (value_node) object->title = get_node_value(value_node);

	value_node = find_element_in_element(item_node, "upnp:artist");
	if (value_node) object->artist = get_node_value(value_node);

	value_node = find_element_in_element(item_node, "upnp:album");
	if (value_node) object->album = get_node_value(value_node);

	value_node = find_element_in_element(item_node, "upnp:genre");
	if (value_node) object->genre = get_node_value(value_node);

	xmldoc_free(doc);
	return 1;
}
Ejemplo n.º 3
0
char *upnp_create_device_desc(struct upnp_device_descriptor *device_def) {
        char *result = NULL;
        struct xmldoc *doc;

        doc = generate_desc(device_def);

        if (doc != NULL) {
                result = xmldoc_tostring(doc);
                xmldoc_free(doc);
        }
        return result;
}
Ejemplo n.º 4
0
char * output_get_grouprole(void)
{
	char *grouprole = NULL;
	struct xmldoc *doc = xmldoc_fromdoc(RENDERXML);
	if(doc){
		struct xmlelement *render_node = find_element_in_doc(doc, "Gmediarender");
		struct xmlelement *group_node = find_element_in_element(render_node, "Group");
		struct xmlelement *value_node = find_element_in_element(group_node, "GroupRole");
		grouprole = get_node_value(value_node);
		xmldoc_free(doc);
	}
	return grouprole;
}
Ejemplo n.º 5
0
int output_set_grouprole(const char*grouprole)
{
	int ret = -1;
	struct xmldoc *doc = xmldoc_fromdoc(RENDERXML);
	char *xmlstring;
	if(doc){
		struct xmlelement *render_node = find_element_in_doc(doc, "Gmediarender");
		struct xmlelement *group_node = find_element_in_element(render_node, "Group");
		struct xmlelement *value_node = find_element_in_element(group_node, "GroupRole");
		if(value_node)
			ret = set_node_value(value_node, grouprole);
		xmlstring = xmldoc_tostring(doc);
		xmlstringtofile(RENDERXML, xmlstring);
		xmldoc_free(doc);
		free(xmlstring);
	}
	return ret;

}