как отделить строку от XML в IOS - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть заметка, которая может поделиться ею с evernote, я сделал это успешно. Но есть опция, которая называется import note. Когда мы нажимаем кнопку импорта, заметки из evernote должны быть загружены в текстовую страницу импорта. Но моя проблемапримечание от приложения evernote в формате xml с кодом note.my для загрузки примечания на сервер evernote:

-(IBAction)sendNoteEvernote:(id)sender{
EDAMNote * note = [[[EDAMNote alloc] init]autorelease];

    // Setting initial values sent by the user
    note.title = @"mybibleapp";

 NSMutableString *str = [[NSMutableString alloc] initWithString:@"NOTES:"]; 

    for (int i = 0; i<[appDelegate.notesArray count]; i++) { 
        NSString * aString = [[NSString alloc] initWithString:[appDelegate.notesArray objectAtIndex:i]] ;
        NSString * ENML= [NSString stringWithFormat:@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">\n<en-note>%@",aString];
//aString contains the note value

ENML = [NSString stringWithFormat:@"%@%@", ENML, @"</en-note>"];
    NSLog(@"%@", ENML);

    // Adding the content & resources to the note
    [note setContent:ENML];
 @try {
        [[Evernote sharedInstance] createNote:note];
        _acteverbackup.hidden = YES;
        _actimageeverbackup.hidden =YES;
    }
    @catch (EDAMUserException * e) {
        _acteverbackup.hidden = YES;
        _actimageeverbackup.hidden =YES;
        NSString * errorMessage = [NSString stringWithFormat:@"Error saving note: error code %i", [e errorCode]];

        proAlertView *alert = [[proAlertView alloc]initWithTitle:@"Evernote" message:errorMessage delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil];
        [alert setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:1.0] withStrokeColor:[UIColor colorWithHue:0.0 saturation:0.0 brightness:0.0 alpha:1.0]];
        [alert show];
        [alert release];      
  return;
    }

я правильно получаю примечание в everrnote, это мой код загрузки или импорта

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Load the EDAMNote object that has guid we have stored in the object
    EDAMNote * note = [(Evernote *)[Evernote sharedInstance] getNote:guid];
noteNavigation.topItem.title = [note title];

    noteContent.text = [note content];
    //noteContent is the textview which display the note
    // Adding a back button to close the windows
    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(goBack:)];

    UINavigationItem *item = [[[UINavigationItem alloc] init] autorelease];
    item.leftBarButtonItem = doneButton;
    item.hidesBackButton = YES;
    [noteNavigation pushNavigationItem:item animated:NO];
    noteNavigation.topItem.title = [note title];


}

noteContent - текстовое представление, которое отображает заметку, здесь я получаю следующие значения

<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE en-note SYSTEM \"http://xml.evernote.com/pub/enml2.dtd\">\n<en-note>%@",mynote is here</en-note>

мне нужно только mynote is here в этом текстовом представлении.Как я могу отделить это от заметки?

1 Ответ

0 голосов
/ 08 февраля 2012

Есть очень хорошая категория NSString, которую вы можете использовать, это часть проекта MWFeedParser .В частности, вы ищете файл NSString + HTML.

Категория NSString + HTML теперь поддерживает декодирование XML, вы можете прочитать об этом здесь .

…NSString+XMLEntities category depreciated and replaced by NSString+HTML with improved HTML character entity encoding/decoding via Google Toolbox for Mac.

Эта категория добавляет следующие методы к классу NSString

- (NSString *)stringByStrippingTags;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;
- (NSString *)stringByDecodingHTMLEntities;
- (NSString *)stringByEncodingHTMLEntities;

Вы должны иметь возможность преобразовывать XML в строку NSString smart , используяэто.

NSString *summary = [[[item.summary stringByStrippingTags] stringByRemovingNewLinesAndWhitespace] stringByDecodingHTMLEntities];

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...