嘿嘿,我在使用TBXML时遇到了一些问题。 我正在尝试解析几个XML节点。我的XML是这样的:
<teste>
1 2 3
但是当我设置的时候,我的应用程序就崩溃了。
itemsList = [[NSMutableArray alloc] init];
TBXML * tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:@"http://localhost/dev/http/test.xml"]] retain];
TBXMLElement * rootXMLElement = tbxml.rootXMLElement;
TBXMLElement * comentarios = [TBXML childElementNamed:@"comentarios" parentElement:rootXMLElement];
while (comentarios != nil) {
TBXMLElement * comentario = [TBXML childElementNamed:@"comentario" parentElement:comentarios];
NSString * descText = [TBXML textForElement:comentario];
[itemsList addObject:descText];
}
我做错了什么?
答案 0 :(得分:0)
您需要使用childElementNamed获取第一个子项,然后通过nextSiblingNamed迭代其余子项。这是我编写的一种使用新块API的便捷方法,对您来说可能很有趣:
+(void) iterateSiblingsWithName:(NSString*)name forNodePath:(NSString*)path fromParent:(TBXMLElement*)node withBlock:(TBXMLElementIterator)block { TBXMLElement* element = ( path != nil ) ? [TBXML nodeForPath:path fromParent:node] : node; if ( !element ) { return; } TBXMLElement* valuenode = [TBXML childElementNamed:name parentElement:element]; if ( !valuenode ) { return; } do { block( valuenode ); } while ( valuenode = [TBXML nextSiblingNamed:name searchFromElement:valuenode] ); } @end
答案 1 :(得分:0)
[itemlist retain];
我认为它会解决你的问题。