2012-03-06 38 views
0

我使用TBXML在我的項目,我想知道TBXML空標記文本

有沒有一種方法來檢查,如果標籤不包含文本,例如

<Description/> 

VS

<Description> This is text </Description> 

當我使用調試器並鍵入po [TBXML textForElement:groupdescription]時,它返回<object returned empty description>當讀取的標記是沒有文本的標記時,另一個完美地工作。所以我的問題是,我該如何檢查?

感謝

回答

1

如果你看一下TBXML來源,你會發現

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

所以,

,如果你會做婆@「」關於廣東發展銀行 - 你會得到「對象返回空描述「

我想你應該檢查文本的長度也許... 實際上,TBXML是一個輕的XML解析器,不包括XML驗證等。這是WH y它太快了;)

+0

謝謝你是忍者 – Armand 2012-03-06 12:56:50

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

通過使用第二個它爲您做檢查。據我所知,像這樣的大多數電話都有+錯誤版本。

請注意,它需要**錯誤。