1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2004 VideoLAN
5 * $Id: xmlparser.cpp,v 1.2 2004/01/24 14:25:16 asmax Exp $
7 * Authors: Cyril Deguet <asmax@via.ecp.fr>
8 * Olivier Teulière <ipkiss@via.ecp.fr>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation; either version 2 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
23 *****************************************************************************/
25 #include "xmlparser.hpp"
27 XMLParser::XMLParser( intf_thread_t *pIntf, const string &rFileName ):
30 m_pReader = xmlNewTextReaderFilename( rFileName.c_str() );
33 msg_Err( getIntf(), "Failed to open %s for parsing",
37 xmlTextReaderSetParserProp( m_pReader, XML_PARSER_VALIDATE, 1 );
41 XMLParser::~XMLParser()
45 xmlFreeTextReader( m_pReader );
50 int XMLParser::parse()
57 int ret = xmlTextReaderRead( m_pReader );
61 int type = xmlTextReaderNodeType( m_pReader );
72 // Read the element name
73 const xmlChar *eltName = xmlTextReaderConstName( m_pReader );
78 // Read the attributes
79 AttrList_t attributes;
80 while( xmlTextReaderMoveToNextAttribute( m_pReader ) == 1 )
82 const xmlChar *name = xmlTextReaderConstName( m_pReader );
83 const xmlChar *value = xmlTextReaderConstValue( m_pReader );
88 attributes[(const char*)name] = (const char*)value;
90 handleBeginElement( (const char*)eltName, attributes);
96 // Read the element name
97 const xmlChar *eltName = xmlTextReaderConstName( m_pReader );
102 handleEndElement( (const char*)eltName );
105 ret = xmlTextReaderRead( m_pReader );
111 void XMLParser::handleBeginElement( const string &rName,
112 AttrList_t &attributes )
114 fprintf(stderr,"%s\n", rName.c_str());
115 AttrList_t::const_iterator it;
116 for (it = attributes.begin(); it != attributes.end(); it++)
118 fprintf(stderr," %s = %s\n", (*it).first, (*it).second);
123 void XMLParser::handleEndElement( const string &rName )
125 fprintf(stderr,"--> %s\n", rName.c_str());