我有一个iPhone应用程序,可以从URL进行XML解析.我在我的资源目录(在XCode中)有一个sample.xml文件,我想使用它.
如何在代码中引用此文件?我已经尝试了@"sample.xml"作为URL,它似乎无法找到它.
我正在解析XML文件并填充表视图.XML的格式如下:
<article>
<title>Title 1</title>
<last-modified>MM/DD/YYY</last-modified>
</article>
...
Run Code Online (Sandbox Code Playgroud)
我目前使用它NSMutableString来收集所有文章标题并在- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string方法中附加字符串.然后在适当的时候,我正在添加articleTitle一个NSMutableArray包含所有文章标题,并从数组中填充表格,正如您所期望的那样.
但是,现在我想切换到使用带有字幕的表格视图单元格(我想将最后修改日期作为detailTextLabel标题和标题textLabel).通过将解析分解为多种方法(即2 parser种方法和foundCharacters方法)的方式,我不确定如何"收集"数据,并从该数据中填充表格.
对此最好的方法是什么?我可以以某种方式填充NSDictionary或其他东西,并在构建表格单元格时按键检索项目吗?
我似乎无法找出解决这个问题的最佳方法.
提前致谢!
我有一个本地xml文件,我知道它包含UTF-8格式良好的xml.但是NSXMLParser不会解析correclty.
档案路径:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *appFile = [documentsDirectory stringByAppendingPathComponent:@"example.xml"];
Run Code Online (Sandbox Code Playgroud)
从Web保存xml:
NSURL *xml = [NSURL URLWithString:@"http://www.example.com/example.xml"];
NSString *data = [[NSString alloc] initWithContentsOfURL:xml encoding:NSUTF8StringEncoding error:nil];
[data writeToFile:appFile atomically:YES encoding:NSUTF8StringEncoding error:nil];
Run Code Online (Sandbox Code Playgroud)
解析xml:
NSURL *xmlFile = [NSURL URLWithString:appFile];
NSXMLParser *addressParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlFile];
Run Code Online (Sandbox Code Playgroud)
如果我尝试直接解析NSURL"xml"它可以工作,但上面的代码将返回NULL并且没有错误.我在论坛上发现了另一篇文章,描述了完全相同的内容,但我再也找不到了,帖子没有答案.
希望有人可以帮忙!基本上只需要将web xml存储到文件中,然后将其提供给NSXMLParser.
我可以使用以下代码读取远程 XML:
-(id)loadXMLByURL:(NSString *)urlString
{
tweets = [[NSMutableArray alloc] init];
NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:urlString];
NSURL *url = [NSURL URLWithString:urlString];
parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
parser.delegate = self;
[parser parse];
return self;
}
Run Code Online (Sandbox Code Playgroud)
我在这里调用上面的函数:
- (void)viewDidLoad
{
xmlcont = [[XMLController alloc] loadXMLByURL:@"http://192.168.10.12:81/book.xml"];
for (Tweet *t in [xmlcont tweets]) {
NSLog(@"At date: %@ you wrote: %@",[t createdAt], [t content]);
}
[super viewDidLoad];
}
Run Code Online (Sandbox Code Playgroud)
实际上我想做这样的事,差别不大.我想在XCode中的Project上读取我的资源文件夹中的XML 本地文件,但是definitelly我不知道该怎么做!我对此感到疯狂!我只是可以读取XML远程文件(http://..../file.xml).
在我的项目中,我正在使用Web服务并从另一个类中的Web服务解析数据,并在tableView中显示这些数据,它在同步中工作得非常好,但我试图异步实现它,虽然已经收到数据但它没有显示数据因为它在控制台上显示当我在模拟器上重新启动应用程序时它将显示我是否等待它直到在控制台上显示有任何方法检查数据是否可用于在tableView上显示以便我可以重新加载tableview以显示数据
下午好,
我已经从Web服务下载数据并且我正在寻找解析数据以便我可以使用它,但是我在解析返回的值时遇到问题,下面是采集代码以及任何其他内容之间的任何帮助将被赞赏
-(IBAction)runNewImport:(id)sender{
recordResults = FALSE;
soapMessage = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
"<s:Envelope \n"
"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n"
"xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n"
"xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" \n"
"s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" \n"
"xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\"> \n"
"<s:Body> \n"
"<[FUNCTION] xmlns=\"http://tempuri.org/\"/>\n"
"</s:Body> \n"
"</s:Envelope>"];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
NSURL *url = [NSURL URLWithString:@"http://[PATH]"];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue: @"[FUNCTION]" forHTTPHeaderField:@"SOAPAction"];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if(theConnection) { …Run Code Online (Sandbox Code Playgroud) 我有NSXMLParser问题,我试过iOS8 NSXMLParser崩溃这个话题,但我真的没有得到解决方案.
我正在创建另一个NXSMLParser委托并在另一个类中设置其委托.
你能告诉我一步一步做什么吗?我感到很困惑.
这是我的代码;
这些代码行在STXMLParser中
STXMLParser2 *stXMLParser2 = [[STXMLParser2 alloc]init];
stXMLParser2.xmlParser = [[NSXMLParser alloc] initWithData:responseLoader.xmlData];
[stXMLParser2.xmlParser setDelegate:self];
[stXMLParser2.xmlParser setShouldResolveExternalEntities:YES];
[stXMLParser2.xmlParser parse];
Run Code Online (Sandbox Code Playgroud) 在斯威夫特,我一直在尝试NSXMLParser.总的来说,我对概念和实施充满信心.
因此,我有一个函数myFunc(),它将包含对.parse()方法的调用.
如果该.parse()方法返回false如何使用委托函数直接parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError)返回?我该如何访问错误?parseErrormyFunc()
我知道我可以打印错误.我可以看到我可以将其值赋给具有类级别范围的变量.但我猜是有一个更好的获得它.
func myFunc() {
// ...
myXmlParser!.delegate = self
if myXmlParser!.parse() != true {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我实现了委托功能
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
// ...
}
func parser(parser: NSXMLParser, foundCharacters string: String) {
// ...
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: …Run Code Online (Sandbox Code Playgroud) 我需要从XML 文件<reading type="NPSI_PM25_3HR" value="xx"/>中检索特定
属性<id>NRS</id>,然后将其解析为变量,稍后我想打印该变量,但我找不到任何方法在 Swift 中执行此操作。有什么办法可以做到这一点吗?谢谢!
我正在开发一个解析XML文件的iOS 4应用程序.一段XML是:
<?xml version="1.0" encoding="utf-8" ?>
<cards>
<card id ="0">
<name lang="es">The Mad</name>
<description lang="es">...</description>
</card>
...
</cards>
Run Code Online (Sandbox Code Playgroud)
我使用以下方法进行解析<name lang="es">The Mad</name>.
#pragma mark -
#pragma mark NSXMLParserDelegate methods
- (void)parser:(NSXMLParser *)parser
didStartElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
attributes:(NSDictionary *)attributeDict
{
NSLog(@"DidStartElement: %@", elementName);
if ([elementName isEqualToString:@"card"])
{
currentCard = [[Card alloc] init];
NSString* arcaneNumber = [attributeDict objectForKey:@"id"];
currentCard.Number = arcaneNumber;
return;
}
if ([elementName isEqualToString:@"name"])
{
if ([[attributeDict objectForKey:@"lang"] isEqualToString:userLanguage])
{
currentProperty = kNameProperty;
return;
}
}
if …Run Code Online (Sandbox Code Playgroud) nsxmlparser ×10
ios ×6
xml ×5
iphone ×3
objective-c ×3
swift ×2
cocoa-touch ×1
file-format ×1
ios8 ×1
parsing ×1
resources ×1
web-services ×1