XML文件的结构 - 使用NSXMLParser捕获顶点数据

时间:2012-02-14 16:14:23

标签: iphone objective-c xml nsxmlparser

我有以下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>

我的问题是如何检测/捕获&gt;之后列出的值? (即399.297 -87842.3等)。 NSXML Parser能够选择这些吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以实现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;
    }

应该做的伎俩