据说我理解了NSXMLParser对XML文件的基本解析,我有以下情况,我有几个元素<table_data>...</table_data>
,它们对于某个属性的值是不同的,所以,例如:NSXMLParser didStartElement只具有一定的属性
<table_data attr="one">...</table_data>
<table_data attr="two">...</table_data>
<table_data attr="three">...</table_data>
虽然didStartElement,我想解析器考虑到<table_data>
元素,只有当它有attr="one"
开始元素。
这将意味着在foundCharacters我能得到只有<table_data attr="one">
子元素的内容,但不的<table_data attr="two">
,<table_data attr="three">
等
到现在为止,我试试这个:
- (void)parser:(NSXMLParser*)parser didStartElement:(NSString *)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary*)attributeDict {
elementoCorrente = [elementName copy];
if ([elementName isEqualToString:@"table_data"]) {
if ([[attributeDict objectForKey:@"attr"] isEqualToString:@"one"]) {
stringDesc = [[NSMutableString alloc] init];
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if ([elementoCorrente isEqualToString:@"field"]) {
[stringDesc appendString:string];
NSLog(@"%@",string);
}
}
但什么我得到的是<field>
元素的内容的日志,所有的<table_data>
的孩子。 有没有办法只打印<field>
元素的内容,如果孩子<table_data attr="one">
? 感谢 法比奥
这在我看来是正确的答案。它是多么容易,是不可思议的。对我感到羞耻......非常感谢Rob花时间为我提供工作代码:)另外,Helderdarocha的答案是有效的,谢谢你们,我现在可以继续! –