-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOpalXMLParser.h
60 lines (43 loc) · 1.73 KB
/
OpalXMLParser.h
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
//
// OpalXMLParser.h
// Opal
//
// Created by Christian Niles on 5/4/10.
// Copyright 2010 Christian Niles. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "OpalXMLEvent.h"
@class OpalXMLScanner;
@interface OpalXMLParser : NSObject {
OpalXMLScanner *scanner;
OpalXMLEvent *currentEvent;
NSUInteger eventCount;
NSUInteger elementCount;
// used to buffer events as needed
NSMutableArray *eventBuffer;
// the stack is used to store start tags, keeping track of the current depth, namespaces, and validity
NSMutableArray *stack;
}
// ===== INITIALIZATION ================================================================================================
- (id)initWithString:(NSString *)xmlstring;
+ (OpalXMLParser *)parserWithString:(NSString *)xmlString;
// ===== STATUS ========================================================================================================
@property (readonly) OpalXMLScanner *scanner;
@property (readonly) OpalXMLEvent *currentEvent;
@property (readonly) NSUInteger eventCount;
@property (readonly) NSUInteger elementCount;
- (BOOL)isInProlog;
- (BOOL)isInElement;
- (NSUInteger)characterPosition;
- (NSUInteger)currentDepth;
// ===== CORE ITERATION METHODS ========================================================================================
- (OpalXMLEvent *)nextEvent;
- (OpalXMLEvent *)nextEventOfType:(OpalXMLEventType)eventType;
- (BOOL)readNextEventInto:(OpalXMLEvent **)theNextEvent;
- (OpalXMLEvent *)peek;
- (OpalXMLEvent *)nextContentEvent;
- (OpalXMLEvent *)nextStartTag;
- (OpalXMLEvent *)skipElementContent;
// ===== CHARACTER DATA ================================================================================================
- (NSMutableString *)readElementText;
@end