作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 API 上传图像,我需要从如下所示的 XML 输出中获取上传的图像 URL (image_link)
<?xml version="1.0" encoding="iso-8859-1"?><imginfo xmlns="http://ns.imageshack.us/imginfo/7/" version="7" timestamp="1283286280">
<rating>
<ratings>0</ratings>
<avg>0.0</avg>
</rating>
<files server="834" bucket="1378">
<image size="515455" content-type="image/jpeg">maidsamaep20scr1.jpg</image>
<thumb size="8822" content-type="image/jpeg">maidsamaep20scr1.th.jpg</thumb>
</files>
<resolution>
<width>1280</width>
<height>720</height>
</resolution>
<class>r</class>
<visibility>no</visibility>
<uploader>
<ip>69.125.188.189</ip>
</uploader>
<links>
<image_link>http://img834.imageshack.us/img834/1378/maidsamaep20scr1.jpg</image_link>
<image_html><a href="http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg" target="_blank"><img src="http://img834.imageshack.us/img834/1378/maidsamaep20scr1.jpg" alt="Free Image Hosting at www.ImageShack.us" border="0"/></a></image_html>
<image_bb>[URL=http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg][IMG]http://img834.imageshack.us/img834/1378/maidsamaep20scr1.jpg[/IMG][/URL]</image_bb>
<image_bb2>[url=http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg][img=http://img834.imageshack.us/img834/1378/maidsamaep20scr1.jpg][/url]</image_bb2>
<thumb_link>http://img834.imageshack.us/img834/1378/maidsamaep20scr1.th.jpg</thumb_link>
<thumb_html><a href="http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg" target="_blank"><img src="http://img834.imageshack.us/img834/1378/maidsamaep20scr1.th.jpg" alt="Free Image Hosting at www.ImageShack.us" border="0"/></a></thumb_html>
<thumb_bb>[URL=http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg][IMG]http://img834.imageshack.us/img834/1378/maidsamaep20scr1.th.jpg[/IMG][/URL]</thumb_bb>
<thumb_bb2>[url=http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg][img=http://img834.imageshack.us/img834/1378/maidsamaep20scr1.th.jpg][/url]</thumb_bb2>
<yfrog_link>http://yfrog.com/n6maidsamaep20scr1j</yfrog_link>
<yfrog_thumb>http://yfrog.com/n6maidsamaep20scr1j.th.jpg</yfrog_thumb>
<ad_link>http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg</ad_link>
<done_page>http://img834.imageshack.us/content.php?page=done&l=img834/1378/maidsamaep20scr1.jpg</done_page>
</links>
这就是我目前拥有的。我获取了要上传的文件,并从 NSXMLDocument 的响应中获取了数据。唯一的问题是从 NSXMLDocument 获取 image_link。
-(void)openPanelDidEnd:(NSOpenPanel *)openPanel
returnCode:(int)returnCode
contextInfo:(void *)x
{
// Did they chosose "Open"
if (returnCode == NSOKButton) {
// Start Upload
NSLog(@"%@",[openPanel filename]);
//Set Imageshack Upload API URL
NSURL *url = [NSURL URLWithString:@"http://www.imageshack.us/upload_api.php"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
//Set API Key
[request setPostValue:@"" forKey:@"key"];
//Set File
[request setFile:[openPanel filename] forKey:@"fileupload"];
//Set Progress
[request setDownloadProgressDelegate:APIProgress];
[request startSynchronous];
// Show API Output
NSString *response = [request responseString];
NSLog(@"%@",response);
int httpcode = [request responseStatusCode];
if (httpcode == 200) {
// Perform XML Phasing
NSError * error;
NSArray *itemNodes;
// Convert Response Data from NSString to NSData
NSData *data = [response dataUsingEncoding:NSUTF8StringEncoding];
NSXMLDocument *doc = [[NSXMLDocument alloc] initWithData:data
options:0
error:&error];
NSMutableArray* imglinks = [[NSMutableArray alloc] initWithCapacity:13];
NSLog(@"%@", doc);
// XPath to get image_link value only
itemNodes = [doc nodesForXPath:@"//links/image_link" error:&error];
for(NSXMLElement* xmlElement in itemNodes)
[imglinks addObject:[xmlElement stringValue]];
NSLog(@"%@",[[imglinks objectAtIndex:0]stringValue]);
// Insert Image URL to Message
[fieldmessage setString:[NSString stringWithFormat:@"#image %@ \\n\\n %@",[[imglinks objectAtIndex:0]stringValue],[fieldmessage string]]];
// Release unneeded items from memory
[itemNodes release];
[doc release];
[data release];
}
else {
// Upload Failed, show error message
[self showsheetmessage:@"MelScrobbleX was unable to upload the image you selected" explaination:[NSString stringWithFormat:@"Error: i \\n \\n %@", httpcode, response]];
}
}
}
问题是它似乎没有显示 NSMutableArray 中的字符串值。它给了我这个错误:
2010-08-31 16:22:13.496 MelScrobbleX[45835:a0f] -[NSCFString stringValue]: unrecognized selector sent to instance 0x12ada80
2010-08-31 16:22:14.026 MelScrobbleX[45835:a0f] -[NSCFString stringValue]: unrecognized selector sent to instance 0x12ada80
从 NSMutableArray 检索 image_link 值的正确方法是什么?
最佳答案
在这一行
for(NSXMLElement* xmlElement in itemNodes)
[imglinks addObject:[xmlElement stringValue]];
在将 xmlElement
放入数组 imglinks
之前,您已获取了 xmlElement
的 stringValue
。所以,在这一行
NSLog(@"%@",[[imglinks objectAtIndex:0]stringValue]);
stringValue
是不必要的...你不应该要求字符串给出字符串值,它已经是一个字符串了!就这么做
NSLog(@"%@",[imglinks objectAtIndex:0]);
关于xml - 从 NSXMLDocument 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613005/
我是一名优秀的程序员,十分优秀!