【发布时间】:2011-12-30 18:56:46
【问题描述】:
鉴于此 XML 结构来自 (http://localhost:3000/route.xml):
<objects type="array">
<object>
<trip0>
<departure>20:01</departure>
<start>Place a</start>
<end>Place b </end>
<arrival>20:16</arrival>
<how>Walking</how>
</trip0>
</object>
<object>
<trip1>
<departure>20:16</departure>
<start>Place b</start>
<end>Place c </end>
<arrival>20:32</arrival>
<how>By car</how>
</trip1>
</object>
</objects>
使用以下 Objective-C 代码:
视图的实现
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
// URL localhost for testing purposes
NSURL *url = [[NSURL alloc] initWithString:@"http://localhost:3000/route.xml"];
// Init parser
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[xmlParser setDelegate:self];
//Start parsing the XML file.
BOOL success = [xmlParser parse];
if(success)
NSLog(@"No Errors");
else
NSLog(@"Errors !!!!!!!!E!!!");
}
#pragma mark XMLParser delegate
- (void)parserDidStartDocument:(NSXMLParser *)parser
{
NSLog(@"Document started", nil);
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict {
if([elementName isEqualToString:@"trip0"]) {
//Initialize the array.
NSLog(@"Found trip0 !");
}
NSLog(@"Processing Element: %@", elementName);
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
NSLog(@"Processing Value: %@", string);
}
我可以将其作为输出:
2011-11-16 19:34:06.006 SandboxTabBar[11754:11603] Processing Element: objects
2011-11-16 19:34:06.008 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.009 SandboxTabBar[11754:11603] Processing Element: object
2011-11-16 19:34:06.009 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.010 SandboxTabBar[11754:11603] Found trip0 !!
2011-11-16 19:34:06.010 SandboxTabBar[11754:11603] Processing Element: trip0
2011-11-16 19:34:06.011 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.011 SandboxTabBar[11754:11603] Processing Element: departure
2011-11-16 19:34:06.012 SandboxTabBar[11754:11603] Processing Value: 20:01
2011-11-16 19:34:06.012 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.013 SandboxTabBar[11754:11603] Processing Element: start
2011-11-16 19:34:06.013 SandboxTabBar[11754:11603] Processing Value: Place a
2011-11-16 19:34:06.014 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.015 SandboxTabBar[11754:11603] Processing Element: end
2011-11-16 19:34:06.015 SandboxTabBar[11754:11603] Processing Value: Place b
2011-11-16 19:34:06.207 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.208 SandboxTabBar[11754:11603] Processing Element: arrival
2011-11-16 19:34:06.209 SandboxTabBar[11754:11603] Processing Value: 20:16
2011-11-16 19:34:06.210 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.211 SandboxTabBar[11754:11603] Processing Element: how
2011-11-16 19:34:06.212 SandboxTabBar[11754:11603] Processing Value: walking
2011-11-16 19:34:06.213 SandboxTabBar[11754:11603] Processing Value: 15 min
2011-11-16 19:34:06.214 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.215 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.216 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.217 SandboxTabBar[11754:11603] Processing Element: object
2011-11-16 19:34:06.218 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.219 SandboxTabBar[11754:11603] Processing Element: trip1
2011-11-16 19:34:06.220 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.221 SandboxTabBar[11754:11603] Processing Element: departure
2011-11-16 19:34:06.222 SandboxTabBar[11754:11603] Processing Value: 20:32
2011-11-16 19:34:06.223 SandboxTabBar[11754:11603] Processing Value:
2011-11-16 19:34:06.221 SandboxTabBar[11754:11603] Processing Element: start
2011-11-16 19:34:06.222 SandboxTabBar[11754:11603] Processing Value: Place b
2011-11-16 19:34:06.223 SandboxTabBar[11754:11603] Processing Value:
等等……
我想用这样的内容填充 UITableviews:
“Trip 0 的出发时间是 20:01 从 Place A 到 Place b,20:16 步行到达。”
和
“行程1的出发时间是20:16从B地到C地,20:32乘车到达”
必须有一种更简单的方法来从 XML 文件中选择和组合我需要的节点。
如何用给定的 XML 文件实现这样的结果?
【问题讨论】:
标签: objective-c cocoa-touch uitableview ios5 nsxmlparser