首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TBXml空标记文本

TBXml空标记文本
EN

Stack Overflow用户
提问于 2012-03-06 20:34:33
回答 2查看 587关注 0票数 0

我在我的一个项目中使用TBXML,我想知道

例如,有没有办法检查标签是否不包含文本

代码语言:javascript
复制
<Description/>

vs

代码语言:javascript
复制
<Description> This is text </Description>

当我使用调试器并输入po [TBXML textForElement:groupdescription]时,当读取的标记是不带文本的标记时,它会返回<object returned empty description>,而另一个则可以很好地工作。所以我的问题是,我如何检查它?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-06 20:53:29

如果你查看TBXML源代码,你会发现

代码语言:javascript
复制
+ (NSString*) textForElement:(TBXMLElement*)aXMLElement {
if (nil == aXMLElement->text) return @"";
return [NSString stringWithCString:&aXMLElement->text[0] encoding:NSUTF8StringEncoding];
}

所以,

如果你在gdb上执行po @"“,你会得到"object returned description”

我想你应该检查一下文本的长度...实际上,TBXML是一个轻量级的xml解析器,并且不包括xml验证等。这就是它如此之快的原因。)

票数 1
EN

Stack Overflow用户

发布于 2012-08-09 17:06:11

以防其他人也面临同样的问题。TBXML具有以下类函数

代码语言:javascript
复制
+ (NSString*) textForElement:(TBXMLElement*)aXMLElement {
    if (nil == aXMLElement->text) return @"";
    return [NSString stringWithCString:&aXMLElement->text[0] encoding:NSUTF8StringEncoding];
}

+ (NSString*) textForElement:(TBXMLElement*)aXMLElement error:(NSError **)error {
    // check for nil element
    if (nil == aXMLElement) {
        *error = [TBXML errorWithCode:D_TBXML_ELEMENT_IS_NIL];
        return @"";
    }

    // check for nil text value
    if (nil == aXMLElement->text || strlen(aXMLElement->text) == 0) {
        *error = [TBXML errorWithCode:D_TBXML_ELEMENT_TEXT_IS_NIL];
        return @"";
    }

    return [NSString stringWithCString:&aXMLElement->text[0] encoding:NSUTF8StringEncoding];
}

通过使用第二个,它会为您进行检查。据我所知,大多数像这样的调用都有一个+error版本。

请注意,它需要一个**错误。

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

https://stackoverflow.com/questions/9583808

复制
相关文章

相似问题

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