#include <parsercollection.h>
Public Member Functions | |
virtual | ~ParserCollection () |
virtual void | changeMapper (const QString &format, Mapper< T > *mapper)=0 |
virtual ErrorCode | lastError () const =0 |
virtual boost::shared_ptr< T > | parse (const DocumentSource &source, const QString &formatHint=QString())=0 |
virtual bool | registerParser (AbstractParser *parser, Mapper< T > *mapper)=0 |
Detailed Description
template<class T>
class Syndication::ParserCollection< T >
A collection of format-specific parser implementations.
To parse a feed source, pass it to the parse() method of this class. In most cases, you should use the global singleton instance Syndication::parserCollection(). When loading the source from the web, use Loader instead of using this class directly.
Example code:
... QFile someFile(somePath); ... DocumentSource src(someFile.readAll()); someFile.close(); FeedPtr feed = parserCollection()->parse(src); if (feed) { QString title = feed->title(); QList<ItemPtr> items = feed->items(); ... }
The template parameter T is the abstraction class parsed documents should be mapped to. If you want to use your own abstraction MyFeed, implement ParserCollection<MyFeed> (Note that you have to provide mapper implementations for every feed format then).
Definition at line 73 of file parsercollection.h.
Constructor & Destructor Documentation
virtual Syndication::ParserCollection< T >::~ParserCollection | ( | ) | [inline, virtual] |
destructor
Definition at line 78 of file parsercollection.h.
Member Function Documentation
virtual void Syndication::ParserCollection< T >::changeMapper | ( | const QString & | format, |
Mapper< T > * | mapper | ||
) | [pure virtual] |
Changes the specific format to abstraction mapping for a parser.
- Parameters:
-
format the format string of the parser whose mapping should be changed. See AbstractParser::format. mapper Mapper implementation doing the mapping from the format specific representation to abstraction of type T.
virtual ErrorCode Syndication::ParserCollection< T >::lastError | ( | ) | const [pure virtual] |
virtual boost::shared_ptr<T> Syndication::ParserCollection< T >::parse | ( | const DocumentSource & | source, |
const QString & | formatHint = QString() |
||
) | [pure virtual] |
tries to parse a given source with the parsers registered.
The source is passed to the first parser that accepts it.
- Parameters:
-
source The source to be parsed formatHint An optional hint which parser to test first. If there is a parser with the given hint as format string (e.g., "rss2", "atom", "rdf"...), it is asked first to accept the source. This can avoid unnecessary AbstractParser::accept() checks and speed up parsing. See also AbstractParser::format().
- Returns:
- The feed document parsed from the source, or NULL if no parser accepted the source.
virtual bool Syndication::ParserCollection< T >::registerParser | ( | AbstractParser * | parser, |
Mapper< T > * | mapper | ||
) | [pure virtual] |
Adds a parser and corresponding mapper to the collection.
AbstractParser::format() must be unique in the collection. If there is already a parser with the same format string, the parser isn't added.
- Note:
- ownership for both
parser
andmapper
is taken by the implementation, so don't delete them in your code!
- Parameters:
-
parser The parser to be registered mapper the mapper that should be used for building the abstraction
- Returns:
- whether the parser was successfully registered or not.
The documentation for this class was generated from the following file: