在没有更多信息的情况下,我假设您正在寻找在 Objective-C 中解析 XML 的最佳方法。这个问题的答案是使用NSXMLParser
类。
您使用NSXMLParser
in 的类必须标记为NSXMLParserDelegate
.h 文件,因此您的 .h 文件将如下所示:
#import <UIKit/UIKit.h>
@interface MyParsingController : UIViewController<NSXMLParserDelegate>
@end
现在,假设您已将您在问题中发布的所有 XML 放在NSString
被调用的XMLString
中,然后您可以将字符串转换为XMLData
对象,初始化您的NSXMLParser
,并通过调用其parse
方法将其设置为:
NSData * XMLData = [XMLString dataUsingEncoding:NSUnicodeStringEncoding];
NSXMLParser * parser = [[NSXMLParser alloc] initWithData:XMLData];
[parser setDelegate:self];
[parser setShouldProcessNamespaces:YES];
[parser parse];
解析器运行后,它将在遍历您的 XML 数据时调用其委托方法,然后您需要解释该数据以构建一个数据模型,然后您可以使用该模型来构建您的 GUI。我不打算为你写那一点,但作为如何解析一些 XML 的示例,这是我最近的一个项目中的代码:
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName
attributes:(NSDictionary *)attributeDict{
if([elementName isEqualToString:@"device"]){
self.currentDeviceID = [[SRDeviceID alloc]init];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if([elementName isEqualToString:@"deviceList"]){
[self.pairingTableView reloadData];
}
if([elementName isEqualToString:@"device"]){
[self.deviceIDListFromServer addObject:self.currentDeviceID];
}
NSString* finalParsedString = [self.currentParseString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
if([elementName isEqualToString:@"deviceName"]){
self.currentDeviceID.deviceName = finalParsedString;
}
if([elementName isEqualToString:@"UUID"]){
self.currentDeviceID.uuid = finalParsedString;
}
if([elementName isEqualToString:@"deviceLocation"]){
self.currentDeviceID.location = finalParsedString;
}
if([elementName isEqualToString:@"deviceLastSeenTime"]){
self.currentDeviceID.lastSeenTime = finalParsedString;
}
self.currentParseString = [NSMutableString stringWithString:@""];
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
[self.currentParseString appendString:string];
}
希望有帮助。