首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新的TBXML指南:如何在iOS 7的Xcode 5中包含TBXML

更新的TBXML指南:如何在iOS 7的Xcode 5中包含TBXML
EN

Stack Overflow用户
提问于 2013-10-09 16:09:32
回答 2查看 4.3K关注 0票数 1

我在我的项目中遇到了包括TBXML在内的问题。

  1. 指南告诉我包括四个文件,TBXML.hTBXML.mNSDataAdditions.hNSDataAdditions.m,但在巨无霸回购中找不到后两个文件。
  2. 我尝试运行示例项目TBXML-书籍,希望能够复制TBXML导入项目的方式,但它在Xcode 5中也没有成功构建。它找不到libTBXML-iOS.a

有人帮忙吗?提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-09 17:51:25

将TBXML包含到项目中

  1. TBXML.hTBXML.m中获取巨无霸回购,并将它们添加到项目中。这两个是你唯一需要的文件。
  2. 在项目的目标>构建阶段中,将编译器标志-fno-objc-arc添加到TBXML.m

加载XML文档

代码语言:javascript
复制
TBXML *sourceXML = [[TBXML alloc] initWithXMLFile:@"dictionary.xml" error:nil];

您可以使用其他init实例方法来分配init,也可以使用类方法样式(我不包括不推荐的方法):

代码语言:javascript
复制
- (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结构

代码语言:javascript
复制
<dictionary>
    <entry id="">
        <text></text>
    </entry>

    <entry id="">
        <text></text>
    </entry>
</dictionary>

提取元素

代码语言:javascript
复制
TBXMLElement *rootElement = sourceXML.rootXMLElement;
TBXMLElement *entryElement = [TBXML childElementNamed:@"entry" parentElement:rootElement];

提取属性

代码语言:javascript
复制
NSString *id = [TBXML valueOfAttributeNamed:@"id" forElement:entryElement];

提取元素文本

代码语言:javascript
复制
TBXMLElement *textElement = [TBXML childElementNamed:@"text" parentElement:entryElement];
NSString *text = [TBXML textForElement:textElement];

遍历未知元素/属性

如果我想打印出每个<text>元素中每个<entry>中的文本,我将这样做:

代码语言:javascript
复制
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,了解如何实现它。

票数 7
EN

Stack Overflow用户

发布于 2013-10-09 16:17:42

如果你还没有用cocoapods的话,我建议使用cocoapods。

http://cocoapods.org/?q=tbxml

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19277203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档