Iphone TBXml空标记文本

Iphone TBXml空标记文本,iphone,objective-c,ios,tbxml,Iphone,Objective C,Ios,Tbxml,我正在我的一个项目中使用TBXML,我想知道 例如,有没有办法检查标记是否不包含文本 <Description/> vs 这是文本 当我使用调试器并键入po[TBXML textforeelement:groupdescription]时,它返回当读取的标记是一个没有文本的标记时,另一个可以正常工作。所以我的问题是,我如何检查它 如果您查看TBXML源代码,您将发现 + (NSString*) textForElement:(TBXMLElement*)aXMLElement

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

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

<Description/>

vs

这是文本
当我使用调试器并键入
po[TBXML textforeelement:groupdescription]
时,它返回
当读取的标记是一个没有文本的标记时,另一个可以正常工作。所以我的问题是,我如何检查它


如果您查看TBXML源代码,您将发现

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

如果您将在gdb上执行po@“”,您将得到“返回的对象为空描述”

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

以防其他人也面临同样的问题。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];
}
通过使用第二个,它为您进行检查。据我所知,像这样的大多数调用都有一个+错误版本

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

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