/* This file is part of KIllustrator. Copyright (C) 1998 Kai-Uwe Sattler (kus@iti.cs.uni-magdeburg.de) modified for kvoctrain by Ewald Arnold kvoctrain@ewald-arnold.dein April ´99 */ #ifndef XmlReader_h_ #define XmlReader_h_ #include "XmlElement.h" #include "XmlTokenizer.h" class KOXML_ISTREAM; /** * The XMLReader class supports reading elements from a XML stream. * * @short A class for reading XML elements from a stream. * @author Kai-Uwe Sattler (kus@iti.cs.uni-magdeburg.de), modifications: Ewald Arnold (kvoctrain@ewald-arnold.de) * @version 2000/07/02 */ class XmlReader { public: /** * Construct a XmlReader instance for the given input stream. * * @param is The open input stream. */ XmlReader (KOXML_ISTREAM& is); /** * Desctructor */ ~XmlReader (); /** * Check the input stream for a valid XML header. * A header should look like *
   *  
   *  
   * 
* where @p dtype and @p dtd are simple strings. * * @return @p true if the header conforms to XML, otherwise * @p false. */ bool validHeader (); /** * Return the document type. * * @return The name of the document type. */ const KOXML_STRING& doctype () const; /** * Return the name of the document type definition. * * @return The name of the DTD. */ const KOXML_STRING& dtd () const; /** * Read a XML element from the stream. If the content is plain text * (no tag), an element with the pseudo ID @p #PCDATA is returned * and the text is available via method getText. * * @see #getText * * @param elem The XML element which is initialized by the method. * @return @p true for successful reading. */ bool readElement (XmlElement& elem); /** * Read plain text from the stream. * * @return The text as a string. */ const KOXML_STRING& getText (); /** * Returns current line number * * @return The current line number */ inline int lineNumber() { return tokenizer.lineNumber(); } protected: bool parseEndElement (XmlElement& elem); bool parseElement (const KOXML_STRING& id, XmlElement& elem); bool readAttributes (std::list& attrib_list); private: XmlTokenizer tokenizer; KOXML_STRING s_dtype, s_dtd; KOXML_STRING text; }; #endif