我在我的一个项目中使用TBXML,我想知道
有没有办法检查标签是否不包含文字,例如
<Description/>
VS
<Description> This is text </Description>
当我使用调试器并输入po [TBXML textForElement:groupdescription]
时,当读取的标签是没有文本的标签时,它返回<object returned empty description>
,另一个完全正常。所以我的问题是,我该如何检查?
由于
答案 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];
}
通过使用秒,它会检查你。据我所知,像这样的大多数调用都有+错误版本。
请注意,它需要**错误。