1

リモート XML ファイルから要素を解析した後、要素とその値のリストを .xml に取得しましたNSArray。配列にはこのようにさらに多くの要素と値が含まれているため、

success; products=<AGSProducts 0x7189020; name='category1';imageIdentifier='1'; imageUrlString='http://myimage.com/images/img1.png'; subProducts=>

imageUrlStringこの NSArrray からを取得する必要があります。これらの配列からこの特定の imageUrlString だけを取得する方法。

MyViewController

@property(nonatomic,strong) NSMutableArray *xmlProductsResults;

[super viewDidLoad];
NSURL *url = [NSURL URLWithString:@"http://myxml.com/Category.xml"];
EGSParser *parser = [[EGSParser alloc] init];
if ([parser loadXMLByURL:url]){
  self.xmlProductsResults = parser.products;
  NSArray *myArray = [_xmlProductsResults objectAtIndex:0];
  NSLog(@"success; products=%@", myArray);
}

アイデアを教えてください

4

4 に答える 4

2

お役に立てれば。

編集 2

NSString *string = [myArray description];
NSString *url = nil;
NSScanner *parser = [NSScanner scannerWithString:string];
[parser scanUpToString:@"imageUrlString" intoString:nil];

if (![parser isAtEnd]) {
    [parser scanUpToString:@"=" intoString:nil];
    NSCharacterSet *charset = [NSCharacterSet characterSetWithCharactersInString:@"\"'"];
    [parser scanUpToCharactersFromSet:charset intoString:nil];
    [parser scanCharactersFromSet:charset intoString:nil];
    [parser scanUpToCharactersFromSet:charset intoString:&url];

}

NSLog(@"URL: %@", url);
于 2013-02-21T09:27:27.800 に答える
1

回答を辞書に変換する

NSMutableDictionary *dic = [myString JSONValue];

dicから次の値を取得できますimageUrlString

于 2013-02-21T09:11:56.003 に答える
1

これを試してみてください。

    //NSArray *arr = [NSArray arrayWithObjects:@"<AGSProducts 0x7189020; name='category1';imageIdentifier='1'; imageUrlString='http://myimage.com/images/img1.png'; subProducts=>", nil];
    //NSString *imgURL= [arr objectAtIndex:0];

    NSString *imgURL=[_xmlProductsResults objectAtIndex:0];

    imgURL = [imgURL substringFromIndex:[imgURL rangeOfString:@"imageUrlString="].location+[@"imageUrlString=" length]+1];
    imgURL = [imgURL substringToIndex:[imgURL rangeOfString:@";"].location-1];
    NSLog(@"%@",imgURL);
于 2013-02-21T09:37:22.493 に答える
1

警告:これはベスト プラクティスではありませんが、うまく機能し、効率的です...

NSString *result = @"";
NSRange r1 = [myString rangeOfString:@"imageUrlString='"];
if(r1.location != NSNotFound)
{
    result = [myString substringFromIndex:r1.location+r1.length];
    NSRange r2 = [result rangeOfString:@"'"];
    if(r2.location != NSNotFound)
    {
        result = [result substringToIndex:r2.location];
    }
    else
    {
        result = @"";
    }
}

NSLog(@"%@", result);
于 2013-02-21T09:19:13.090 に答える