TBXml空标记文本

时间:2012-03-06 12:34:33

标签: iphone objective-c ios tbxml

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

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

<Description/>

VS

<Description> This is text </Description>

当我使用调试器并输入po [TBXML textForElement:groupdescription]时,当读取的标签是没有文本的标签时,它返回<object returned empty description>,另一个完全正常。所以我的问题是,我该如何检查?

由于

2 个答案:

答案 0 :(得分:1)

如果你看看TBXML来源,你会发现

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

所以,

如果你在gdb上做po @“” - 你会得到“对象返回空描述”

我认为你应该查看文字长度... 实际上,TBXML是一个轻量级的xml解析器,不包括xml验证等。这就是为什么它如此之快;)

答案 1 :(得分:0)

其他人也面临同样的问题。 TBXML具有这些类函数

+ (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];
}

通过使用秒,它会检查你。据我所知,像这样的大多数调用都有+错误版本。

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