2012-06-11 3 views
2

У меня есть непрерывные теги img id="#", где # изменяется от 1 до 9.Невозможно проанализировать следующий XML?

Описание тегов состоит из плавающих значений.

Когда я использую стандартный NSXML Parser, я не получаю все значения.

Мой XML для справки:

<img id="1">-0.0111328,-0.0635608,0.152549,0.11211,-0.0250431, 

      -0.0370875,0.0862391,0.0970791,-0.0195908, 

      -0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729, 

      0.0253036,-0.0770325,0.14065,0.118424,0.1787, 

      0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331, 

      0.106532,0.224731,0.133766,0.222096,0.165214,0.240752, 

      -0.0280366,0.106239,0.052094,0.110642, 

</img> 

Как бы я разобрать выше XML?

Пожалуйста, помогите мне.

Thanx

+2

Где мой код? Покажите нам, что вы пробовали. –

+1

также, пожалуйста, покажите, какие значения вы можете получить от своих кодов. – Raptor

+0

@MattBall, попробовав следующий ответ, я обязательно отправлю свой ответ, чтобы получить решение или ссылку для других. – madLokesh

ответ

0

Наконец-то получил ... я разместил начальные и конечные теги для img id = '#'. Моя структура теперь выглядит так:

<images> 

    <img id = '1'> -0.0111328,-0.0635608,0.152549,0.11211,-0.0250431, 

     -0.0370875,0.0862391,0.0970791,-0.0195908, 

     -0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729, 

     0.0253036,-0.0770325,0.14065,0.118424,0.1787, 

     0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331, 

     0.106532,0.224731,0.133766,0.222096,0.165214,0.240752, 

     -0.0280366,0.106239,0.052094,0.110642, .... 

    </img> 

    <img id = '2'> ... 

    </img> 

    .... 

    .... 

</images> 

<mapping> 

    <map> 
    <imgid> 1 </imgid> 
    <keyword> heavy </keyword> 

    </map> 

    <map> 
    <imgid> 2 </imgid> 
    <keyword> metal </keyword> 

    </map> 

    ... 

    ... 

</mapping> 

Размещение начальных и конечных тегов позволило мне разобрать весь xml.

Раньше начальные и конечные теги предназначались для отдельных изображений, которые приводили к разбору одного изображения.

Это заставило меня добавить еще один ключевой момент при разборе XML.

Надеюсь, что это поможет и другим.

2

Это потому, что parser:foundCharacters: не доставляет все символы сразу. Вам необходимо объединить все строки, которые вы получаете между обратными вызовами parser:didStartElement:namespaceURI:qualifiedName:attributes: и parser:didEndElement:namespaceURI:qualifiedName:, которые вы получаете для тега <img>.

В приведенном ниже коде buf является NSMutableString ivar представителя вашего парсера.

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict { 
    if ([qualifiedName isEqualToString:@"img"]) { 
     buf = [NSMutableString string]; 
    } 
} 
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName { 
    if ([qualifiedName isEqualToString:@"img"]) { 
     buf = [buf stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
     NSLog(@"Got %@", buf); 
    } 
} 

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    [buf appendString:string]; 
} 
Смежные вопросы