将 TBXML 包含到您的项目中
从the Github repo 获取TBXML.h 和TBXML.m 并将它们添加到您的项目中。这两个是您唯一需要的文件。
在项目的 Target > Build Phases 中,将编译器标志 -fno-objc-arc 添加到 TBXML.m。
加载 XML 文档
TBXML *sourceXML = [[TBXML alloc] initWithXMLFile:@"dictionary.xml" error:nil];
您可以将 alloc-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];
遍历未知元素/属性
如果我想打印每个<entry> 中每个<text> 元素中的文本,我会这样做:
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 之类的操作,如the old guide 所示。您也可以查看TBXML.h 了解如何操作。