XMLLanguageParser.cc

Go to the documentation of this file.
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             if (name == "summary")
00068             {
00069               dataPtr->summary.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
00070             }
00071             else if (name == "description") {
00072               dataPtr->description.setText(_helper.content(child), Locale(_helper.attribute(child,"lang")));
00073             }
00074           }
00075         }
00076         return dataPtr;
00077       } /* end process */
00078       
00079       
00080       XMLLanguageParser::XMLLanguageParser(istream &is, const string &baseUrl)
00081       : XMLNodeIterator<XMLLanguageData_Ptr>(is, baseUrl,LANGUAGESCHEMA)
00082       { 
00083         fetchNext();
00084       }
00085       
00086     } // namespace yum
00087   } // namespace parser
00088 } // namespace zypp

Generated on Thu May 4 16:03:23 2006 for zypp by  doxygen 1.4.6