00001 /*---------------------------------------------------------------------\ 00002 | ____ _ __ __ ___ | 00003 | |__ / \ / / . \ . \ | 00004 | / / \ V /| _/ _/ | 00005 | / /__ | | | | | | | 00006 | /_____||_| |_| |_| | 00007 | | 00008 \---------------------------------------------------------------------*/ 00013 #include <zypp/parser/xmlstore/XMLLanguageParser.h> 00014 #include <zypp/parser/xmlstore/XMLResObjectParser.h> 00015 00016 #include <zypp/parser/LibXMLHelper.h> 00017 #include <istream> 00018 #include <string> 00019 #include "zypp/parser/xml_parser_assert.h" 00020 #include <libxml/xmlreader.h> 00021 #include <libxml/tree.h> 00022 #include <zypp/base/Logger.h> 00023 #include <zypp/parser/xmlstore/schemanames.h> 00024 00025 using namespace std; 00026 namespace zypp { 00027 namespace parser { 00028 namespace xmlstore { 00029 00030 XMLLanguageParser::XMLLanguageParser() 00031 { } 00032 00033 XMLLanguageParser::XMLLanguageParser(XMLLanguageData_Ptr& entry) 00034 : XMLNodeIterator<XMLLanguageData_Ptr>(entry) 00035 { } 00036 00037 00038 XMLLanguageParser::~XMLLanguageParser() 00039 { } 00040 00041 00042 // select for which elements process() will be called 00043 bool 00044 XMLLanguageParser::isInterested(const xmlNodePtr nodePtr) 00045 { 00046 return _helper.isElement(nodePtr) && _helper.name(nodePtr) == "language"; 00047 } 00048 00049 // do the actual processing 00050 XMLLanguageData_Ptr 00051 XMLLanguageParser::process(const xmlTextReaderPtr reader) 00052 { 00053 xml_assert(reader); 00054 XMLLanguageData_Ptr dataPtr = new XMLLanguageData; 00055 xmlNodePtr dataNode = xmlTextReaderExpand(reader); 00056 xml_assert(dataNode); 00057 00058 parseResObjectCommonData( dataPtr, dataNode); 00059 parseDependencies( dataPtr, dataNode); 00060 00061 // for (xmlNodePtr child = dataNode->children; child && child != dataNode; child = child->next) 00062 // { 00063 // if (_helper.isElement(child)) 00064 // { 00065 // string name = _helper.name(child); 00066 // 00067 // 00068 // } 00069 // } 00070 return dataPtr; 00071 } /* end process */ 00072 00073 00074 XMLLanguageParser::XMLLanguageParser(istream &is, const string &baseUrl) 00075 : XMLNodeIterator<XMLLanguageData_Ptr>(is, baseUrl,LANGUAGESCHEMA) 00076 { 00077 fetchNext(); 00078 } 00079 00080 } // namespace yum 00081 } // namespace parser 00082 } // namespace zypp