将 TBXML 包含到您的项目中
从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];
遍历未知元素/属性
如果我想打印出 every 内每个<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
如何去做。