0

xml データを解析してコンソールに表示することはできますが、そのデータをUITextFieldまたは に表示することはできませんUILabel

viewDidLoadメソッドでもテキストフィールドに割り当てようとしました。

以下は私のコードです、

NSMutableString *currentNodeContent;
NSXMLParser *parser;
ViewController *currentProfile;
bool isStatus;

ViewController *xmlParser;

-(id)loadXMLByURL:(NSString *)urlString
{
    _profile = [[NSMutableArray alloc] init];
    NSURL *url = [NSURL URLWithString:urlString];
    NSData *data = [[NSData alloc] initWithContentsOfURL:url];
    parser = [[NSXMLParser alloc] initWithData:data];
    parser.delegate = self;
    [parser parse];
    return self;
}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if([elementName isEqualToString:@"profileinfo"])
    {
        currentProfile = [ViewController alloc];
        isStatus = YES;
    }

    if([elementName isEqualToString:@"first_name"])
    {
        currentProfile = [ViewController alloc];
        isStatus = YES;
    }
}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if([elementName isEqualToString:@"first_name"])
    {
        currentProfile.firstName = currentNodeContent;
        NSLog(@"%@",currentProfile.firstName);
        first_Name.text = currentNodeContent;//UITextField
        first_name.text = currentNodeContent;//Label

    }
    if([elementName isEqualToString:@"last_name"])
    {
        currentProfile.lastName = currentNodeContent;
         NSLog(@"%@",currentProfile.lastName);
        last_Name.text = currentProfile.lastName;
    }
    if([elementName isEqualToString:@"profileinfo"])
    {
        [self.profile addObject:currentProfile];
        currentProfile = nil;
        currentNodeContent = nil;
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    xmlParser = [[ViewController alloc] loadXMLByURL:@"http://www.mxxxxx.net/xxx/xxxxx.aspx?type=proifileinfo&loginid=xxx@gmail.com"];

}
4

3 に答える 3

1

「UITextField」または「UILabel」に値を直接割り当てる代わりに、値を文字列に格納します。解析アクションが完了したら、文字列値を「UITextField」または「UILabel」に割り当てます。おそらく、「-viewWillAppear」メソッドでそれを行う必要があります:-)

于 2012-07-20T10:44:38.763 に答える
0

XMLパーサーの解析中にも同じ問題があります。

currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

上記の行を使用して、スペースとタブをトリミングしています。しかし、うまくいかないこともあります。

そこで、次のコードを実装します。このコードは役に立つかもしれません。

NSString *sname = [currentNodeContent stringByReplacingOccurrencesOfString:@"\n" withString:@""];

NSString *actualString = [sname stringByReplacingOccurrencesOfString:@"\t" withString:@""];

次に、actualString必要なものにを渡します。

于 2012-07-20T09:52:42.533 に答える
0

IBOutlet UILabel *label を作成します。インターフェイスで、Interface Builder で接続すると、label.text = @"Anything"; でテキストを設定できます。

于 2012-07-20T08:56:53.557 に答える