Разбор строки парсера, если строка содержит - - PullRequest
0 голосов
/ 22 декабря 2010

Мой NSXMLParser разрывается на этой строке:

<title>AAA &#8211; BCDEFGQWERTYUIO</title>

Я разобрал это таким образом, надежда верна:

- (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string{
[...]
if ([currentElement isEqualToString:@"title"]) {
    if (![string isEqualToString:@""]) {
            [title addObject:string];
            NSLog(@"str: %@", string);
    }
}

возвращает меня:

ул : AAA
ул : -
ул : BCDEFGQWERTYUIO

Но я хочу вернуть одну строку:

стр. : AAA - BCDEFGQWERTYUIO

потому что это правильный заголовок.

Есть идеи?

Спасибо.

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

Я считаю, что лучше создать ваш объект в методе didEndElement.Таким образом, вы можете просто добавлять данные строки во временную строку.Таким образом, вы можете сделать что-то, как показано ниже (ПРИМЕЧАНИЕ: код не проверен)

В заголовке вашего объекта:

NSMutableString *currentElementData;

...

@property (nonatomic, retain) NSMutableString *currentElementData;

И при разборекод у вас будет

- (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string{
[...]
if ([currentElement isEqualToString:@"title"]) {
    [currentElementData appendString:string];
    }
}

Тогда позже в вашем элементе закончится

   - (void) parser: (NSXMLParser *) parser didEndElement: (NSString *) elementName...{
    [...]
    if ([elementName isEqualToString:@"title"]) {
        [title addObject:currentElementData];
         [currentElementData setString:@""];
        }
    }
0 голосов
/ 22 декабря 2010

вы можете использовать CDATA раздел в вашем xml, потому что такие символы, как "<" и "&" недопустимы в элементах XML. </p>

"<" вызовет ошибку, потому что анализатор интерпретируетэто как начало нового элемента. </p>

"&" сгенерирует ошибку, потому что анализатор интерпретирует его как начало символьной сущности.

...