gpt4 book ai didi

xml - 从 NSXMLDocument 获取值

转载 作者:行者123 更新时间:2023-12-03 17:44:26 25 4
gpt4 key购买 nike

我正在使用 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>&lt;a href=&quot;http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://img834.imageshack.us/img834/1378/maidsamaep20scr1.jpg&quot; alt=&quot;Free Image Hosting at www.ImageShack.us&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;</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>&lt;a href=&quot;http://img834.imageshack.us/my.php?image=maidsamaep20scr1.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://img834.imageshack.us/img834/1378/maidsamaep20scr1.th.jpg&quot; alt=&quot;Free Image Hosting at www.ImageShack.us&quot; border=&quot;0&quot;/&gt;&lt;/a&gt;</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&amp;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 之前,您已获取了 xmlElementstringValue。所以,在这一行

 NSLog(@"%@",[[imglinks objectAtIndex:0]stringValue]);

stringValue 是不必要的...你不应该要求字符串给出字符串值,它已经是一个字符串了!就这么做

 NSLog(@"%@",[imglinks objectAtIndex:0]);

关于xml - 从 NSXMLDocument 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com