Iphone TBXml空标记文本
我正在我的一个项目中使用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
<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];
}