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
|
#import "OFObject.h"
#import "OFString.h"
extern int _OFXMLParser_reference;
@class OFXMLParser;
@protocol OFXMLParserDelegate
- (void)xmlParser: (OFXMLParser*)parser
didStartTagWithName: (OFString*)name
prefix: (OFString*)prefix
namespace: (OFString*)ns
attributes: (OFArray*)attrs;
- (void)xmlParser: (OFXMLParser*)parser
didEndTagWithName: (OFString*)name
prefix: (OFString*)prefix
namespace: (OFString*)ns;
- (void)xmlParser: (OFXMLParser*)parser
foundString: (OFString*)string;
- (void)xmlParser: (OFXMLParser*)parser
foundComment: (OFString*)comment;
- (OFString*)xmlParser: (OFXMLParser*)parser
foundUnknownEntityNamed: (OFString*)entity;
@end
@protocol OFXMLUnescapingDelegate
- (OFString*)foundUnknownEntityNamed: (OFString*)entitiy;
@end
@interface OFXMLParser: OFObject <OFXMLUnescapingDelegate>
{
OFObject <OFXMLParserDelegate> *delegate;
enum {
OF_XMLPARSER_OUTSIDE_TAG,
OF_XMLPARSER_TAG_OPENED,
OF_XMLPARSER_IN_TAG_NAME,
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
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
105
|
#import "OFObject.h"
#import "OFString.h"
extern int _OFXMLParser_reference;
@class OFXMLParser;
/**
* A protocol that needs to be implemented by delegates for OFXMLParser.
*/
@protocol OFXMLParserDelegate
/**
* This callback is called when the XML parser found the start of a new tag.
*
* \param name The name of the tag which just started
* \param prefix The prefix of the tag which just started or nil
* \param ns The namespace of the tag which just started or nil
* \param attrs The attributes included in the tag which just started or nil
*/
- (void)xmlParser: (OFXMLParser*)parser
didStartTagWithName: (OFString*)name
prefix: (OFString*)prefix
namespace: (OFString*)ns
attributes: (OFArray*)attrs;
/**
* This callback is called when the XML parser found the end of a tag.
*
* \param name The name of the tag which just ended
* \param prefix The prefix of the tag which just ended or nil
* \param ns The namespace of the tag which just ended or nil
*/
- (void)xmlParser: (OFXMLParser*)parser
didEndTagWithName: (OFString*)name
prefix: (OFString*)prefix
namespace: (OFString*)ns;
/**
* This callback is called when the XML parser found a string.
*
* \param string The string the XML parser found
*/
- (void)xmlParser: (OFXMLParser*)parser
foundString: (OFString*)string;
/**
* This callback is called when the XML parser found a comment.
*
* \param comment The comment the XML parser found
*/
- (void)xmlParser: (OFXMLParser*)parser
foundComment: (OFString*)comment;
/**
* This callback is called when the XML parser found an entity it doesn't know.
* The callback is supposed to return a substitution for the entity or nil if
* it is not known to the callback as well, in which case an exception will be
* risen.
*
* \param entity The name of the entity the XML parser didn't know
* \return A substitution for the entity or nil
*/
- (OFString*)xmlParser: (OFXMLParser*)parser
foundUnknownEntityNamed: (OFString*)entity;
@end
/**
* A protocol that needs to be implemented by delegates for
* stringByXMLUnescapingWithHandler:.
*/
@protocol OFXMLUnescapingDelegate
/**
* This callback is called when an unknown entity was found while trying to
* unescape XML. The callback is supposed to return a substitution for the
* entity or nil if it is not known to the callback as well, in which case an
* exception will be risen.
*
* \param entity The name of the entity that is unknown
* \return A substitution for the entity or nil
*/
- (OFString*)foundUnknownEntityNamed: (OFString*)entitiy;
@end
/**
* An event-based XML parser which calls the delegate's callbacks as soon as
* it finds something, thus suitable for streams as well.
*/
@interface OFXMLParser: OFObject <OFXMLUnescapingDelegate>
{
OFObject <OFXMLParserDelegate> *delegate;
enum {
OF_XMLPARSER_OUTSIDE_TAG,
OF_XMLPARSER_TAG_OPENED,
OF_XMLPARSER_IN_TAG_NAME,
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
OFArray *attrs;
OFString *attr_name;
OFString *attr_prefix;
char delim;
OFArray *previous;
}
+ xmlParser;
- (id)delegate;
- setDelegate: (OFObject <OFXMLParserDelegate>*)delegate;
- parseBuffer: (const char*)buf
withSize: (size_t)size;
@end
/**
* The OFString (OFXMLUnescaping) category provides methods to unescape XML in
* strings.
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
OFArray *attrs;
OFString *attr_name;
OFString *attr_prefix;
char delim;
OFArray *previous;
}
/**
* \return A new, autoreleased OFXMLParser
*/
+ xmlParser;
/**
* \return The delegate that is used by the XML parser
*/
- (id)delegate;
/**
* Sets the delegate the OFXMLParser should use.
*
* \param delegate The delegate to use
*/
- setDelegate: (OFObject <OFXMLParserDelegate>*)delegate;
/**
* Parses a buffer with the specified size.
*
* \param buf The buffer to parse
* \param size The size of the buffer
*/
- parseBuffer: (const char*)buf
withSize: (size_t)size;
@end
/**
* The OFString (OFXMLUnescaping) category provides methods to unescape XML in
* strings.
|