我在服务器上有一个XML文件,我需要将其解析为我的iOS应用程序,然后我需要将其放入UITableView
。我的XML是这样的:
<plan>
<action>
<id>1</id>
<name>item 1</name>
</action>
<action>
<id>2</id>
<name>item 2</name>
</action>
<action>
<id>3</id>
<name>item 3</name>
</action>
</plan>
我需要在表视图中获取<item>
标签的每个实例。
Apple提供了一个示例,它可能正好包含了您需要的内容,该项目名为LazyTableImages,您可以在这里找到它
这个例子将执行以下步骤:
- 通过调用NSXMLParser的委托方法解析内容
- 加载解析后的数据到ViewController
- 重新加载UITableView数据以显示从XML中提取的内容
你必须使用NSXMLParser来解析你的XML文件。或者试试这个
示例:
#import <Foundation/
Foundation.h>
@interface Parser : NSObject <NSXMLParserDelegate>
{
NSXMLParser *parser;
NSMutableString *element;
NSString *tag;
}
@end
//initalization of parser
-init {
if(self == [super init]) {
//pass in your xml file/code here here.
parser = [[NSXMLParser alloc]
initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"Sample" ofType: @"xml"]]];
[parser setDelegate:self];
[parser parse];
}
return self;
}
//start parsing
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary
*)attributeDict {
NSLog(@"Started
Element %@", elementName);
element = [NSMutableString
string];
}
// end parsing
- (void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName {
if([elementName isEqualToString:@"name"]
tag = element;
}
save the string
- (void)parser:(NSXMLParser *)parser
foundCharacters:(NSString *)string
if(element == nil)
element = [[NSMutableString
alloc] init];
[element appendString:string];
}