This repository was archived by the owner on Aug 27, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMPWXmlParser16bit.m
89 lines (71 loc) · 1.9 KB
/
MPWXmlParser16bit.m
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
/* MPWXmlParser16bit.m Copyright (c) 1999 by Marcel P. Weiher, All Rights Reserved */
#import "MPWXmlParser16bit.h"
@implementation MPWXmlParser(sixtenBit)
typedef unichar xmlchar;
#import "delimitAttrValues.h"
-(BOOL)endElementBE:(const xmlchar*)start length:(int)len
{
id endName;
start+=2;
len-=3;
endName = MPWUniqueStringWithUnichars(start,len);
if ( [[self currentTag] isEqual: endName] ) {
POPTAG;
ENDELEMENT( endName );
return YES;
} else {
[NSException raise:@"non-matching tags" format:@"non matching tags start '%@' end '%@'",[self currentTag],endName];
return NO;
}
}
-(BOOL)beginElementBE:(const xmlchar*)start length:(int)len nameLen:(int)nameLen
{
id tag;
BOOL isEmpty=NO;
const xmlchar *attrStart;
int attrLen;
id attrs;
start++;
nameLen--;
len-=2;
attrStart=start+nameLen+1;
attrLen=len-nameLen-1;
if ( start[len-1]=='/' ) {
isEmpty=YES;
len--;
} else {
}
tag = MPWUniqueStringWithUnichars(start,nameLen);
[self pushTag:tag];
attrs = GETOBJECT(attributeCache);
// [self scanAttributesFromData:[NSString stringWithCharacters:start length:nameLen] into:attrs];
BEGINELEMENT( tag, attrs );
if ( isEmpty ) {
POPTAG;
ENDELEMENT(tag);
}
return YES;
}
-(BOOL)characterDataAllowed
{
return NO;
}
-(BOOL)makeTextBE:(const xmlchar*)start length:(int)len firstEntityOffset:(int)entityOffset
{
if ([self characterDataAllowed] ) {
CHARACTERS([NSString stringWithCharacters:start length:len]);
}
return YES;
}
-(BOOL)makeCDataBE:(const xmlchar*)start length:(int)len
{
int cdlen = 9;
start+=cdlen;
len-=cdlen+2;
if ( [self characterDataAllowed] ) {
CDATA([NSString stringWithCharacters:start length:len]);
//--- also have to check for non '@' valueType
}
return YES;
}
@end