我有以下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能够选择这些吗?
谢谢!
答案 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;
}
应该做的伎俩