我正在从服务器检索XML文档,并希望在我的应用程序中的UITableView中显示它。到目前为止,我有以下代码:
@implementation textxmlViewController
@synthesize tableviews;
-(void)viewDidLoad{
[super viewDidLoad];
NSURL *url = [[NSURL alloc] initWithString:@"http://theserver.com/demo.xml"];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[xmlParser setDelegate:self];
BOOL success = [xmlParser parse];
if(success)
NSLog(@"success");
else
NSLog(@"Error");
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
NSLog(string);
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if (qName) {
elementName = qName;
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict {
if (qName) {
elementName = qName;
}
if ([elementName isEqualToString:@"text"]) {
}
}
我在这个视图中已经有了一个UITableView,我的问题是如何在表格视图中显示XML的内容?
我的XML数据如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Answers>
<Answer>
<Result>it's good</Result>
<Evaluate>can you tell me why?</Evaluate>
</Answer>
<Answer>
<Result>about 5 hours</Result>
<Evaluate>it's too long</Evaluate>
</Answer>
</Answers>
那我怎么办呢?感谢
答案 0 :(得分:0)
这取决于您希望如何显示信息。至少你应该实现cellForRowAtIndexPath:来返回要显示的UITableViewCell。
根据您的XML结构,您可以获得答案单元格,每个单元格都有两个UITextField来显示结果并进行评估。
请查看http://adeem.me/blog/2009/05/19/iphone-programming-tutorial-part-1-uitableview-using-nsarray/获取教程。
答案 1 :(得分:0)
我建议使用另一个XML解析器而不是使用NSXMLParser。 Ray Wenderlich写了一篇关于iPhone(iOS)上不同XML解析可能性的好文章:http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project
我认为使用基于DOM的XML解析器会更容易。您可以使用indexPath直接从解析的xmlData中获取数据。
例如:如果你使用GDataXML,你只需要调用方法
+ (GDataXMLElement *)elementsWithName:(NSString *)name;
使用name ='Answers'返回节点以获取所有答案。
在这个GDataXMLElement上调用方法
- (NSArray *)elementsForName:(NSString *)name;
name ='Answer',它为您提供NSArray的所有答案。
您可以使用[answersArray count]返回numberOfRowsInSection,将此数组用作UITableView的数据源。在cellForIndexPath方法中,通过调用
获取答案的GDataXMLElementGDataXMLElement * answerElement = [answersArray objectAtIndex: indexPath.row];
只需解析元素'name'和'value'的answerElement,即可在UITableView中显示数据。