2012-03-06 5 views
0

예를TBXml 빈 태그 텍스트

을 위해, 나는 내 프로젝트에 TBXML을 사용하고 내가

태그가없는 텍스트를 포함하지 않는 경우 확인하는 방법이 있나요

궁금
<Description/> 

<Description> This is text </Description> 

디버거를 사용하고 po [TBXML textForElement:groupdescription]을 입력하면 읽힌 태그가 텍스트가없는 경우 <object returned empty description>을 반환하고 다른 하나는 완벽하게 작동합니다. 그래서 내 질문은, 어떻게 확인합니까? "GDB에 - 당신이 얻을 것이다"당신이 TBXML 소스를 보면 당신은 "포 @ 할 것입니다 경우에 당신이 그렇게

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

,

를 찾을 수

감사

답변

1

객체는 빈 설명을 반환 "

아마도 텍스트 길이를 확인해야한다고 생각합니다 ... 실제로 TBXML은 가벼운 xml 파서이며 xml 유효성 검사 등을 포함하지 않습니다. 그것은 매우 빠릅니다.)

+0

감사합니다. 닌자입니다. – Armand

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

두 번째를 사용하면 검사가 수행됩니다. 내 지식에이 호출과 같은 대부분의 + 오류 버전이 있습니다.

** 오류가 발생합니다.