DCL 4.0
Loading...
Searching...
No Matches
XMLParser.h
Go to the documentation of this file.
1#ifndef __DCL_XML_PARSER_H__
2#define __DCL_XML_PARSER_H__ 20110703
3
4#ifndef __DCL_CONFIG_H__
5#include <dcl/Config.h>
6#endif
7
8#ifdef _MSC_VER
9 #ifdef _DLL
10 #if defined(_DEBUG)
11 #pragma comment(lib, "expatd.lib")
12 #else
13 #pragma comment(lib, "expat.lib")
14 #endif
15 #else
16 #define XML_STATIC
17 #ifdef _DEBUG
18 #pragma comment(lib, "libexpatd.lib")
19 #else
20 #pragma comment(lib, "libexpat.lib")
21 #endif
22 #endif
23#endif
24
25#include <expat.h>
26
27#ifndef __DCL_OBJECT_H__
28#include <dcl/Object.h>
29#endif
30#ifndef __DCL_EXCEPTION_H__
31#include <dcl/Exception.h>
32#endif
33#ifndef __DCL_ARRAY_H__
34#include <dcl/Array.h> // StringStringArray
35#endif
36#ifndef __DCL_WRITER_H__
37#include <dcl/Writer.h>
38#endif
39
40__DCL_BEGIN_NAMESPACE
41
42class XmlParser;
43
45{
47
48protected:
49 String __message;
50
51public:
52 XmlException(XML_Parser _parser);
53 virtual String toString() const;
54};
55
57{
59
60protected:
61 static void startElement(void* _userData, const XML_Char* _name, const XML_Char** _attrs);
62 static void endElement(void* _userData, const XML_Char* _name);
63 static void characters(void* _userData, const XML_Char* _chars, int _len);
64
65 virtual void startElement(const String& _name, const StringStringArray& _attrs);
66 virtual void endElement(const String& _name);
67 virtual void characters(const String& _chars);
68
69 friend class XmlParser;
70};
71
82class DCLCAPI XmlParser : public Object
83{
85
86protected:
87 XML_Parser __parser;
88
89public:
91 virtual ~XmlParser();
92
101 void parse(const ByteString& _data, XmlDefaultHandler& _handler)
103
104};
105
106class DCLCAPI XmlNode : public Object
107{
109
110protected:
111 XmlNode* __pParentNode;
112
113public:
114 XmlNode(XmlNode* _pParentNode) { __pParentNode = _pParentNode; }
115 XmlNode* parentNode() const { return __pParentNode; }
116};
117
119{
121
122protected:
123 String __chars;
124
125public:
126 virtual String toString() const;
127
128 XmlCharsNode(XmlNode* _pParentNode, const String& _chars);
129};
130
132{
134
135protected:
136 String __name; // element name
137
138 StringStringArray __attrs; // attributes
139 PointerArray __children; // array of XmlNode
140
141public:
142 virtual String toString() const;
143
144 XmlElement(XmlNode* _pParentNode,
145 const String& _name, const StringStringArray& _attrs);
146 virtual ~XmlElement();
147
148 void addChildNode(XmlNode* pNode);
149
150 const String& name() const { return __name; }
151 const StringStringArray& attrs() const { return __attrs; }
152 const PointerArray& children() const { return __children; }
153 const String innerText() const;
154 const String innerXml() const;
155};
156
158{
160
161protected:
162 virtual void startElement(const String& _name, const StringStringArray& _attrs);
163 virtual void endElement(const String& _name);
164 virtual void characters(const String& _chars);
165
166 XmlElement* __pCurrentElement;
167 XmlElement* __pTopElement;
168
169public:
170 virtual String toString() const;
171
173 virtual ~XmlDocument();
174
175 const XmlElement* topElement() const { return __pTopElement; }
176};
177
178DCLCAPI inline Writer& operator << (Writer& _writer, const XmlNode& _obj)
180{
181 _writer << _obj.toString();
182 return _writer;
183}
184
185DCLCAPI inline Writer& operator << (Writer& _writer, const XmlDocument& _obj)
187{
188 _writer << _obj.toString();
189 return _writer;
190}
191
192
193__DCL_END_NAMESPACE
194
195#endif // __DCL_XML_PARSER_H__
#define DCLCAPI
Definition Config.h:100
#define __DCL_THROWS1(e)
Definition Config.h:167
#define DECLARE_CLASSINFO(class_name)
Definition Object.h:210
DCLCAPI Writer & operator<<(Writer &_writer, const XmlNode &_obj) __DCL_THROWS1(IOException *)
Definition XMLParser.h:178
virtual String toString() const
Definition Exception.cpp:40
Exception(Exception *_cause=NULL)
Object()
Definition Object.cpp:183
virtual String toString() const
Definition Object.cpp:187
XmlCharsNode(XmlNode *_pParentNode, const String &_chars)
friend class XmlParser
Definition XMLParser.h:69
virtual String toString() const
const XmlElement * topElement() const
Definition XMLParser.h:175
XmlElement(XmlNode *_pParentNode, const String &_name, const StringStringArray &_attrs)
virtual String toString() const
const PointerArray & children() const
Definition XMLParser.h:152
void addChildNode(XmlNode *pNode)
const String & name() const
Definition XMLParser.h:150
const StringStringArray & attrs() const
Definition XMLParser.h:151
XmlException(XML_Parser _parser)
XmlNode * parentNode() const
Definition XMLParser.h:115
XmlNode(XmlNode *_pParentNode)
Definition XMLParser.h:114
void parse(const ByteString &_data, XmlDefaultHandler &_handler) __DCL_THROWS1(XmlException *)