0

私は自分のプロジェクトで TBXML を使用していますが、疑問に思っていました

たとえば、タグにテキストが含まれていないかどうかを確認する方法はありますか

<Description/>

<Description> This is text </Description>

デバッガーを使用して入力すると、読み取られたタグがテキストのないタグである場合po [TBXML textForElement:groupdescription]に返さ<object returned empty description>れ、他のタグは完全に機能します。だから私の質問は、どうすればそれを確認できますか?

ありがとう

4

2 に答える 2

1

TBXML ソースを見ると、

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

それで、

gdb で po @"" を実行すると、「オブジェクトが空の説明を返しました」というメッセージが表示されます

多分テキストの長さをチェックするべきだと思います...実際、TBXMLは軽量のxmlパーサーであり、xmlの検証などは含まれていません.そのため、非常に高速です;)

于 2012-03-06T12:53:28.550 に答える
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];
}

秒を使用することで、チェックが行われます。私の知る限り、このような呼び出しのほとんどには +error バージョンがあります。

**エラーが必要であることに注意してください。

于 2012-08-09T09:06:10.897 に答える