Как загрузить данные XML-файла в UITableView? - PullRequest
2 голосов
/ 03 августа 2011

Я получаю 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>

Так как я могу это сделать?Спасибо

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

Я бы рекомендовал использовать другой анализатор XML вместо NSXMLParser.Рэй Вендерлих (Ray Wenderlich) написал хорошую статью о различных возможностях синтаксического анализа XML на iPhone (iOS): http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

Я думаю, вам будет проще использовать анализатор XML на основе DOM.Вы можете использовать indexPath, чтобы получить данные прямо из проанализированного xmlData.

Например: если вы используете GDataXML, вам просто нужно вызвать метод

+ (GDataXMLElement *)elementsWithName:(NSString *)name;

с именем = 'Ответы', который возвращает узел для всех ответов.

в этом GDataXMLElement вызовите метод

 - (NSArray *)elementsForName:(NSString *)name;

с name = 'Answer', который дает вам все ответы как NSArray.

Вы можете использовать этот массив в качестве источника данных для вашего UITableView, возвращая numberOfRowsInSectionс [количество ответов в массиве].А в методе cellForIndexPath получите GDataXMLElement для ответа, вызвав

GDataXMLElement  * answerElement = [answersArray objectAtIndex: indexPath.row];

Просто проанализируйте answerElement для элементов 'name' и 'value', чтобы отобразить данные в вашем UITableView.

0 голосов
/ 04 августа 2011

Это зависит от того, как вы хотите, чтобы информация отображалась.По крайней мере, вы должны реализовать cellForRowAtIndexPath: чтобы вернуть отображаемый UITableViewCell.

В соответствии с вашей XML-структурой у вас могут быть ячейки для ответов, в каждом из которых есть два UITextFields для отображения результата и оценки.

Пожалуйста, посмотрите на http://adeem.me/blog/2009/05/19/iphone-programming-tutorial-part-1-uitableview-using-nsarray/ для учебника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...