如何在iPhone中解析本地存储的XML文件?
请使用代码段帮助我
答案 0 :(得分:4)
我使用过NSXMLParser并实现了它。我的资源中有r.xml文件。我刚解析标题并使用NSXMLParser显示。
r.xml:
<rss>
<eletitle > My Xml Program </eletitle>
</rss>
我的示例代码是
@interface:
NSXMLParser *rssparser;
NSMutableArray *stories;
NSMutableDictionary *item;
NSMutableString *currrentTitle;
NSString *currentElement;
@implementation:
-(void) viewDidAppear:(BOOL) animated
{
[self parseXMLFileAtURL];
}
-(void) parseXMLFileAtURL
{
stories = [[NSMutableArray alloc] init];
NSURL *xmlURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"r" ofType:@"xml"]];
rssparser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
[rssparser setDelegate:self];
[rssparser setShouldProcessNamespaces:NO];
[rssparser setShouldReportNamespacePrefixes:NO];
[rssparser setShouldResolveExternalEntities:NO];
[rssparser parse];
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if([elementName isEqualToString:@"rss"]);
{
item = [[NSMutableDictionary alloc] init];
currrentTitle = [[NSMutableString alloc] init];
}
}
-(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *) string
{
if([currentElement isEqualToString:@"eletitle"])
{
[currrentTitle appendString:string];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"rss"])
{
[item setObject:currrentTitle forKey:@"eletitle"];
[stories addObject:[item copy]];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"The currrentTitle is %@",currrentTitle);
}
最好的运气。
答案 1 :(得分:0)
对不起,我现在不能给你任何片段,但是在我前一段时间做过的一个项目中,我们使用了touchXML库。
http://code.google.com/p/touchcode/wiki/TouchXML
有了这个,解析XML非常容易。
祝你好运!