我一直在寻找大约两个小时,现在试图找出这个错误是什么以及如何解决它。 Apple的文件很高兴地说
NSXMLParserAttributeNotStartedError 属性未启动。可用 Mac OS X v10.3及更高版本。宣布于 NSXMLParser.h。
但未能提供任何帮助。有人可以帮我从这里出去吗?非常感谢任何朝着正确方向的推动。
在viewDidLoad中,我有:
NSURL *xmlUrl = [NSURL fileURLWithPath:xmlFilepath];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlUrl];
[xmlParser setDelegate:self];
[xmlParser setShouldResolveExternalEntities:NO];
BOOL success = [xmlParser parse];
获取xml没问题,我可以成功读取直到根元素,然后它就会中断。
其余的相关代码如下:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"foo"]) {
foo = [[NSMutableArray alloc] init];
} else if([elementName isEqualToString:@"bar"]) {
bar = [[Bar alloc] init];
}
}
- (void)parser:(NSXMLParser *)parser foundAttributeDeclarationWithName:(NSString *)attributeName forElement:(NSString *)elementName type:(NSString *)type defaultValue:(NSString *)defaultValue {
if ([elementName isEqualToString:@"bar"]) {
if ([attributeName isEqualToString:@"barAttrib1"]) {
[bar setBarAttrib1:[defaultValue intValue]];
} else if ([attributeName isEqualToString:@"barAttrib2"]) {
[bar setBarAttrib2:defaultValue];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
// nothing inside the elements, just attributes
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"bar"]) {
[foo addObject:bar];
[bar release];
bar = nil;
}
}
提前致谢。
编辑:示例xml
<foo>
<bar barAttrib1=1 barAttrib2="hello" />
<bar barAttrib1=2 barAttrib2="world" />
</foo>
答案 0 :(得分:7)
如果这是XML,则在属性值周围引用 REQUIRED 。试试
<foo>
<bar barAttrib1="1" barAttrib2="hello" />
<bar barAttrib1="2" barAttrib2="world" />
</foo>
请注意barAttrib1