- case XML_READER_ENDELEM:
- /* element end tag */
- psz_name = xml_ReaderName( p_xml_reader );
- if( !psz_name )
- {
- msg_Err( p_demux, "invalid xml stream" );
- goto end;
- }
- /* leave if the current parent node <track> is terminated */
- if( !strcmp( psz_name, psz_element ) )
- {
- b_ret = true;
- goto end;
- }
- /* there MUST have been a start tag for that element name */
- if( !p_handler || !p_handler->name
- || strcmp( p_handler->name, psz_name ))
- {
- msg_Err( p_demux, "there's no open element left for <%s>",
- psz_name );
- goto end;
- }
- /* special case: key */
- if( !strcmp( p_handler->name, "key" ) )
- {
- psz_key = strdup( psz_value );
- }
- /* call the simple handler */
- else if( p_handler->pf_handler.smpl )
- {
- p_handler->pf_handler.smpl( p_track, psz_key, psz_value );
- }
- FREE_ATT();
- p_handler = NULL;
- break;
+ case XML_READER_TEXT:
+ /* simple element content */
+ free( psz_value );
+ psz_value = xml_ReaderValue( p_xml_reader );
+ if( !psz_value )
+ {
+ msg_Err( p_demux, "invalid xml stream" );
+ goto end;
+ }
+ break;