我的项目中遇到TBXML问题。
guide告诉我要包含四个文件TBXML.h
,TBXML.m
,NSDataAdditions.h
和NSDataAdditions.m
,但后两者无处可去可以在the Github repo找到。
我尝试运行示例项目TBXML-Books,希望复制TBXML导入项目的方式,但它也不能在Xcode 5中成功构建。找不到libTBXML-iOS.a
。
有人帮忙吗?提前谢谢。
答案 0 :(得分:7)
从the Github repo获取TBXML.h
和TBXML.m
并将其添加到您的项目中。这两个是你需要的唯一文件。
在您的项目的目标>构建阶段,将编译器标志-fno-objc-arc
添加到TBXML.m
。
TBXML *sourceXML = [[TBXML alloc] initWithXMLFile:@"dictionary.xml" error:nil];
您可以使用其他init实例方法alloc-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;
<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
的操作,如the old guide所示。您也可以查看TBXML.h
了解如何进行操作。
答案 1 :(得分:2)
如果您还没有使用cocoapods,我建议使用。