1 /*****************************************************************************
3 *****************************************************************************
4 * Copyright (C) 2004 VideoLAN
5 * $Id: xmlparser.cpp,v 1.1 2004/01/24 13:08:12 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",
39 XMLParser::~XMLParser()
43 xmlFreeTextReader( m_pReader );
48 int XMLParser::parse()
55 int ret = xmlTextReaderRead( m_pReader );
59 int type = xmlTextReaderNodeType( m_pReader );
69 // Read the element name
70 const xmlChar *eltName = xmlTextReaderConstName( m_pReader );
75 // Read the attributes
76 AttrList_t attributes;
77 while( xmlTextReaderMoveToNextAttribute( m_pReader ) == 1 )
79 const xmlChar *name = xmlTextReaderConstName( m_pReader );
80 const xmlChar *value = xmlTextReaderConstValue( m_pReader );
85 attributes[(const char*)name] = (const char*)value;
87 handleBeginElement( (const char*)eltName, attributes);
90 ret = xmlTextReaderRead( m_pReader );
96 void XMLParser::handleBeginElement( const string &rName,
97 AttrList_t &attributes )
99 fprintf(stderr,"%s\n", rName.c_str());
100 AttrList_t::const_iterator it;
101 for (it = attributes.begin(); it != attributes.end(); it++)
103 fprintf(stderr," %s = %s\n", (*it).first, (*it).second);