发布于 2013-10-09 17:51:25
将TBXML包含到项目中
TBXML.h和TBXML.m中获取巨无霸回购,并将它们添加到项目中。这两个是你唯一需要的文件。-fno-objc-arc添加到TBXML.m。加载XML文档
TBXML *sourceXML = [[TBXML alloc] initWithXMLFile:@"dictionary.xml" error:nil];您可以使用其他init实例方法来分配init,也可以使用类方法样式(我不包括不推荐的方法):
- (id)initWithXMLString:(NSString*)aXMLString error:(NSError **)error;
- (id)initWithXMLData:(NSData*)aData error:(NSError **)error;
- (id)initWithXMLFile:(NSString*)aXMLFile error:(NSError **)error;
- (id)initWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension error:(NSError **)error;
+ (id)newTBXMLWithXMLString:(NSString*)aXMLString error:(NSError **)error;
+ (id)newTBXMLWithXMLData:(NSData*)aData error:(NSError **)error;
+ (id)newTBXMLWithXMLFile:(NSString*)aXMLFile error:(NSError **)error;
+ (id)newTBXMLWithXMLFile:(NSString*)aXMLFile fileExtension:(NSString*)aFileExtension error:(NSError **)error;示例XML结构
<dictionary>
<entry id="">
<text></text>
</entry>
<entry id="">
<text></text>
</entry>
</dictionary>提取元素
TBXMLElement *rootElement = sourceXML.rootXMLElement;
TBXMLElement *entryElement = [TBXML childElementNamed:@"entry" parentElement:rootElement];提取属性
NSString *id = [TBXML valueOfAttributeNamed:@"id" forElement:entryElement];提取元素文本
TBXMLElement *textElement = [TBXML childElementNamed:@"text" parentElement:entryElement];
NSString *text = [TBXML textForElement:textElement];遍历未知元素/属性
如果我想打印出每个<text>元素中每个<entry>中的文本,我将这样做:
TBXML *sourceXML = [[TBXML alloc] initWithXMLFile:@"dictionary.xml" error:nil];
TBXMLElement *rootElement = sourceXML.rootXMLElement;
TBXMLElement *entryElement = [TBXML childElementNamed:@"entry" parentElement:rootElement];
do {
TBXMLElement *textElement = [TBXML childElementNamed:@"text" parentElement:entryElement];
NSString *word = [TBXML textForElement:textElement];
NSLog(@"%@", word);
} while ((entryElement = entryElement->nextSibling) != nil);我个人还没有尝试过遍历属性,但我假设您可以执行类似entryElement->firstAttribute的操作,如老导游中所示。您还可以查看TBXML.h,了解如何实现它。
发布于 2013-10-09 16:17:42
如果你还没有用cocoapods的话,我建议使用cocoapods。
http://cocoapods.org/?q=tbxml
https://stackoverflow.com/questions/19277203
复制相似问题