как передать локальный путь в NSXMLParser

#cocoa #nsxmlparser

#cocoa #nsxmlparser

Вопрос:

как передать локальный путь в NSXMLParser

вот так

 NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:storePath];
  

где storepath — это локальный путь, подобный этому:

 /var/mobile/Applications/56EEB906-2B73-493C-9BE7-2732440CDB69/Documents/xml1.php
  

и мой код выглядит следующим образом:

 //NSURL *urla = [[NSURL alloc] initWithString:storePath];
NSURL *urla = [[[NSURL alloc] init] fileURLWithPath:storePath];

//NSData *dataa = [NSData dataWithContentsOfURL:urla];

NSLog(@"urls ois %@",urla);
  

помогите мне, почему я получаю нулевое значение

Ответ №1:

Эй, все это несколько несправедливо.

я предлагаю это, очень просто

         NSString *path=@"/Users/farshore/Desktop/prasanna/XMLParsing/Books-6.xml";  //this is ur path of xml file


        NSURL *url = [[NSURL alloc] initFileURLWithPath:path];
  

Ответ №2:

Попробуйте этот:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(
                     NSDocumentDirectory,
                     NSUserDomainMask, YES
                 );
NSString *documentsDirectory = [paths objectAtIndex:0];
NSURL *urla = [NSURL fileURLWithPath:[documentsDirectory
                         stringByAppendingString:@"/xml1.php"]];
  

Более подробная информация в Руководстве по программированию приложений для iPhone: получение путей к каталогам приложений.

Обновление: Существует распространенное недоразумение, что stringByTrimmingCharactersInSet . Он не заменяет все пробелы в строке, он только удаляет начальные и конечные пробелы.

Если вы хотите избавиться от пробелов, вам нужно заменить их самостоятельно, используя что-то вроде stringByReplacingCharactersInRange:withString: .

Однако:

  • Я не уверен, чем бы вы заменили эти строки, чтобы получить действительный путь. Насколько я знаю, в симуляторе путь к папке Documents приложения на самом деле содержит пробелы (которые случайно вызываются в документе, на который я ссылался).
  • Я не уверен, почему пробелы вас беспокоят. Эта строка является допустимым путем (при условии, что вы, конечно, действительно создали <app>/Documents/xml1.php файл); и согласно NSXMLParser документации, initWithContentsOfUrl принимает любой полный URL-адрес со схемой, поддерживаемой NSURL , и file:// является поддерживаемой схемой.

Если NSXMLParser возвращается конкретная ошибка, добавьте ее в свой вопрос (или задайте другой), чтобы мы могли помочь вам с актуальной проблемой.

Комментарии:

1. спасибо, но как удалить эти пробелы?? file://localhost/Users/applefan/Library/Application Support/iPhone Simulator/3.1.3/Applications/134C5D58-D930-4F0A-B2F7-D25A170D6F09/Documents/xml1.php

2. ); NSString *documentsDirectory = [пути к объекту objectAtIndex:0]; documentsDirectory = [documentsDirectory stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; NSLog(@»documentsDirectory is %@»,documentsDirectory ); NSURL *urlc = [NSURL fileURLWithPath:[documentsDirectory stringByAppendingString:@»/ Строка добавления строки:@»/xml1.php «]]; //urlc = [urlc stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; NSLog(@»urls is %@»,urlc); в urlc все еще есть пробел, пожалуйста, помогите

3. вот так ile://localhost/Users/applefan/Library/Application Support/iPhone Simulator/3.1.3/Applications/FD5A8AF3-0B07-4D56-8477-97F0DCEF15B5/Documents/xml1.php

4. Привет NSString *documentsDirectory = [пути к объекту objectAtIndex:0]; documentsDirectory = [documentsDirectory stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; //documentsDirectory = [documentsDirectory stringByAddingPercentEscapesUsingEncoding:(NSStringEncoding)NSUTF8StringEncoding]; NSURL *urlc = [NSURL fileURLWithPath:[Директория документов stringByAppendingString:@»/xml1.php » ]]; здесь мой documentdirctly работает нормально без каких-либо пробелов,, но когда я передаю это в NSurl, я не знаю, почему он добавляет эти % 20 между ними

5. RFC 3986 ( tools.ietf.org/html/rfc3986 ) указывает разрешенные символы в URL. В частности, пробел не входит в набор разрешенных символов, поэтому его необходимо кодировать в процентах, согласно пункту 2.1 того же RFC. Отсюда .

Ответ №3:

Я предполагаю, что вы читаете PHP-файл напрямую, а не передаете его через PHP, поэтому выходные данные не являются XML.