00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00009 00010 00011 #include "zypp/parser/yum2/YUMPrimaryParser.h" 00012 #include "zypp/data/ResolvableData.h" 00013 00015 namespace zypp 00016 { 00017 namespace parser 00018 { 00019 namespace yum2 00020 { 00021 00022 YUMPrimaryParser::YUMPrimaryParser( zypp::data::ResolvableDataConsumer &consumer ) 00023 { 00024 _consumer.reset(&consumer); 00025 } 00026 00027 void YUMPrimaryParser::startElement(const std::string name, const xmlChar **atts) 00028 { 00029 if ( name == "package" ) 00030 _package.reset(new zypp::data::Package()); 00031 } 00032 00033 void YUMPrimaryParser::characters(const xmlChar *ch, int len) 00034 { 00035 //MIL << "append buffer :" << len << " [" << ( (len < 20) ? string((const char *)(ch), len) : "" ) << "]" << std::endl; 00036 _buffer.append( (const char *)ch, len); 00037 } 00038 00039 void YUMPrimaryParser::endElement(const std::string name) 00040 { 00041 if ( name == "name" ) 00042 _package->name = _buffer; 00043 if ( name == "arch" ) 00044 _package->arch = Arch(_buffer); 00045 00046 if ( name == "package" ) 00047 { 00048 _consumer->consumePackage(*_package); 00049 } 00050 00051 _buffer.clear(); 00052 } 00053 00054 00055 } // namespace yum2 00056 } // namespace parser 00057 } // namespace zypp 00059
1.5.0