【发布时间】:2014-01-09 21:36:11
【问题描述】:
我正在尝试从 Xcode 中的 URL 解析 XML。我遇到的问题是节点中的换行符。当我解析以下 XML 时,我得到的地址非常好,但不是名称或描述。此外,如果碰巧有一个“&”符号,解析器就会停止解析。如何绕过这两个障碍?
这是我尝试解析的示例 XML:
<item>
<Name>
John Smith
</Name>
<Address>555 WHITEHEAD ST, Greenville, NY 55555</Address>
<Description>
Brick house - white trim
</Description>
</item>
<item>
<Name>
Jane Smith
</Name>
<Address>555 WHITEHEAD ST, Greenville, NY 55555</Address>
<Description>
Brick house - white trim & stone drive
</Description>
</item>
这是我用来解析 XML 的代码:
-(id) loadXMLByURL:(NSString *)urlString {
arrests = [[NSMutableArray alloc] init];
NSURL *url = [NSURL URLWithString:urlString];
NSData *data = [[NSData alloc] initWithContentsOfURL:url];
parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
return self;
}
-(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"item"]) {
currentArrest = [[ArrestObject alloc] init];
}
}
-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
-(void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([elementName isEqualToString:@"channel"]) {
return;
}
if ([elementName isEqualToString:@"item"]) {
[self.arrests addObject:currentArrest];
currentArrest = nil;
}
else {
[currentArrest setValue:currentNodeContent forKey:elementName];
currentNodeContent = nil;
}
}
非常感谢任何建议!
【问题讨论】:
标签: ios xml parsing xml-parsing