Структура файла XML - захват данных вершины с помощью NSXMLParser - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть следующий xml-файл, который я анализирую с помощью NSXMLParser:

<geometry id="window_strip-mesh" name="window_strip">
  <mesh>
    <source id="window_strip-mesh-positions">
      <float_array id="window_strip-mesh-positions-array" count="1302">399.297 -87842.3 233.334 399.297 -89320.4 233.334 -821.159 
...
</float_array>

У меня вопрос, как я могу обнаружить / перехватить значения, перечисленные после> (то есть 399.297 -87842.3 и т. Д.на).Может ли NSXML Parser их поднять?

Спасибо!

1 Ответ

1 голос
/ 14 февраля 2012

вы можете реализовать методы NSXMLDelegate,

-  (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict;

-  (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock;

и

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName

Для вашего примера вы должны поместить следующую строку в метод didStartElement::

if([elementName isEqualToString:@"float_array"]) { 
    float_array_bool = YES;
}

Затем в методе - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; вы можете реализовать

if (float_array_bool) {
    [yourItemToStoreValues.floatArray addObject:string];
}

В методе parserDidEndElement: вы должны сбросить значение bool:

 if([elementName isEqualToString:@"float_array"]) {
        float_array_bool    = NO;
    }

Это должно сработать

...