Я пытаюсь проанализировать XML-файл, используя NSXMLParser
.My NSXMLParserDelegate
реализует parser:didStartElement
и parser:didEndElement
и получает сообщения от анализатора для каждого элемента.Но когда я пытаюсь распечатать их, я обнаруживаю, что сообщения пусты.Чего мне не хватает?
Мой делегат:
@interface ExtensionXML : NSObject <NSXMLParserDelegate> {
@private NSXMLParser* xmlParser;
@private NSURL* fileUrl;
}
- (void) parse;
- (ExtensionXML*) initWithPath: (NSString*)path;
@end
@implementation ExtensionXML
- (ExtensionXML*) initWithPath: (NSString*)path
{
if (self = [super init])
{
fileUrl = [NSURL fileURLWithPath:[path stringByExpandingTildeInPath]]; // error handling
}
return self;
}
- (void) parse
{
xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:fileUrl];
[xmlParser setDelegate:self];
[xmlParser setShouldResolveExternalEntities:YES];
[xmlParser setShouldProcessNamespaces:YES];
[xmlParser setShouldReportNamespacePrefixes:YES];
[xmlParser parse];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
NSLog(@"start: element %s uri %s qualified name %s", elementName, namespaceURI, qualifiedName);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
NSLog(@"end: element %s uri %s qualified name %s", elementName, namespaceURI, qualifiedName);
}
@end
Файл xml:
<someroot xmlns="http://ns.mycompany.com/product/format/1.3">
<id>myid</id>
<version>1</version>
<components>
<component name="componentOne">
<initializer>Init0</initializer>
</component>
</components>
</someroot>
Выходные данные NSLog
показывают, что elementName, namespaceURI и qualizesNameвсе пустые.