Overview
| Comment: | Add -[xmlParser:foundUnknownEntityNamed:] to OFXMLParserDelegate. |
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA3-256: |
83c351c9fd8f3e14430ea327b3e06d34 |
| User & Date: | js on 2009-07-19 20:39:07 |
| Other Links: | manifest | tags |
Context
|
2009-07-20
| ||
| 18:39 | Add support for C strings encoded in ISO 8859-15. (check-in: 0ea758cd9c user: js tags: trunk) | |
|
2009-07-19
| ||
| 20:39 | Add -[xmlParser:foundUnknownEntityNamed:] to OFXMLParserDelegate. (check-in: 83c351c9fd user: js tags: trunk) | |
| 18:14 | Add support for C strings encoded in ISO 8859-1. (check-in: 8216fb9343 user: js tags: trunk) | |
Changes
Modified src/OFXMLParser.h from [46733a7e27] to [b01ef202a5].
| ︙ | |||
25 26 27 28 29 30 31 32 33 | 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | + + + + + + - + |
attributes: (OFDictionary*)attrs;
- (BOOL)xmlParser: (OFXMLParser*)parser
didEndTagWithName: (OFString*)name
prefix: (OFString*)prefix
namespace: (OFString*)ns;
- (BOOL)xmlParser: (OFXMLParser*)parser
foundString: (OFString*)string;
- (OFString*)xmlParser: (OFXMLParser*)parser
foundUnknownEntityNamed: (OFString*)entity;
@end
@protocol OFXMLUnescapingDelegate
- (OFString*)foundUnknownEntityNamed: (OFString*)entitiy;
@end
|
| ︙ | |||
58 59 60 61 62 63 64 | 64 65 66 67 68 69 70 71 72 73 74 | - - - - |
+ xmlParser;
- (id)delegate;
- setDelegate: (OFObject <OFXMLParserDelegate>*)delegate;
- parseBuffer: (const char*)buf
withSize: (size_t)size;
@end
|
Modified src/OFXMLParser.m from [47f877a838] to [8b1f567d63].
| ︙ | |||
86 87 88 89 90 91 92 93 94 95 96 97 98 99 | 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | + + |
}
return self;
}
- (void)dealloc
{
[delegate release];
[cache release];
[name release];
[prefix release];
[ns release];
[attrs release];
[attr_name release];
|
| ︙ | |||
132 133 134 135 136 137 138 | 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | - + + + |
[cache appendCString: buf + last
withLength: len];
if ([cache length] > 0) {
OFString *str;
pool = [[OFAutoreleasePool alloc] init];
|
| ︙ | |||
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 | 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 | + + + + - + |
last = i + 1;
state = OF_XMLPARSER_IN_ATTR_VALUE;
break;
/* Looking for attribute value */
case OF_XMLPARSER_IN_ATTR_VALUE:
if (buf[i] == delim) {
OFString *attr_val;
len = i - last;
if (len > 0)
[cache appendCString: buf + last
withLength: len];
if (attrs == nil)
attrs =
[[OFMutableDictionary alloc] init];
pool = [[OFAutoreleasePool alloc] init];
attr_val = [cache
stringByXMLUnescapingWithHandler: self];
|
| ︙ | |||
390 391 392 393 394 395 396 397 398 399 400 401 402 403 | 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 | + + + + + + |
/* In OF_XMLPARSER_IN_TAG, there can be only spaces */
if (len > 0 && state != OF_XMLPARSER_IN_TAG)
[cache appendCString: buf + last
withLength: len];
return self;
}
- (OFString*)foundUnknownEntityNamed: (OFString*)entity
{
return [delegate xmlParser: self
foundUnknownEntityNamed: entity];
}
@end
@implementation OFString (OFXMLUnescaping)
- stringByXMLUnescaping
{
return [self stringByXMLUnescapingWithHandler: nil];
}
|
| ︙ |
Modified tests/OFXMLParser/OFXMLParser.m from [b3f4a79e63] to [5db627fdbd].
| ︙ | |||
64 65 66 67 68 69 70 71 72 73 74 75 76 | 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 | + + + + + + + + + - + |
- (BOOL)xmlParser: (OFXMLParser*)parser
foundString: (OFString*)string
{
printf("STRING\n\"%s\"\n\n", [string cString]);
return YES;
}
- (OFString*)xmlParser: (OFXMLParser*)parser
foundUnknownEntityNamed: (OFString*)entity
{
if ([entity isEqual: @"foo"])
return @"foobar";
return nil;
}
@end
int
main()
{
const char *foo = "bar<foo:bar bar='b&az' qux=\"quux\">foo<bar"
|
| ︙ |