TBXml текст пустого тега - PullRequest
       33

TBXml текст пустого тега

0 голосов
/ 06 марта 2012

Я использую TBXML в своем проекте, и мне было интересно

Есть ли способ проверить, не содержит ли тег текст, например,

<Description/>

против

<Description> This is text </Description>

Когда я использую отладчик и набираю po [TBXML textForElement:groupdescription], возвращается <object returned empty description>, когда прочитанный тег - это тот, у которого нет текста, другой работает отлично. Итак, мой вопрос, как я могу проверить это?

Спасибо

Ответы [ 2 ]

1 голос
/ 06 марта 2012

Если вы посмотрите на источник TBXML, вы найдете

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

,

, если вы сделаете po @ "" на gdb - вы получите "объект вернул пустое описание"

Я думаю, вы должны проверить длину текста, может быть ... На самом деле, TBXML - это легкий xml-анализатор, не включающий проверку xml и т. Д. Вот почему это так быстро;)

0 голосов
/ 09 августа 2012

Если другие сталкиваются с той же проблемой. 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];
}

Используя второй, он проверяет вас. Насколько мне известно, большинство таких звонков имеют версию + error.

Обратите внимание, что требуется ** ошибка.

...