blob: 0c7904afd04a40debf54aa9020badd1705131714 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
/* -*- C++ -*-
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
* <pre>
* <?xml version="1.0"?>
* <!doctype dtype system dtd>
* </pre>
* 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<XmlAttribute>& attrib_list);
private:
XmlTokenizer tokenizer;
KOXML_STRING s_dtype,
s_dtd;
KOXML_STRING text;
};
#endif
|