1

そのため、XML ファイルの要素で未定義の要素を見つける際に問題が発生しています。

要素「アイテム」に解析できます...

<item key="ser.1.device.000001-3I67-2310.max_sampling_time" label="14459" sev="none" time="1373373210">14459</item>

「item」要素の最後に、保存する必要がある未定義のキーがあることに気付いた場合は、どうすればよいでしょうか? 別の例を次に示します: (データを定義するキーがない「300」に注意してください。これが保存しようとしているものです)

<item key="mod.dcc.heartbeat" label="" sev="none" time="1373475787">300</item>

「時間」キーの後のその位置には常に文字列値があり、それを抽出する必要があります....

TBXML を使用するためのコードを次に示します...その要素を取得するには、何かを「追加」するだけです....

TBXML *tbxml = [[TBXML alloc] initWithURL:url];
NSLog(@"TBXML: %@", tbxml);

TBXMLElement *status = tbxml.rootXMLElement;
NSString *statusString = [TBXML elementName:status];
NSLog(@"ROOT: %@", statusString);

TBXMLElement *itemElement = [TBXML childElementNamed:@"item" parentElement:status];

NSMutableDictionary *loggerData = [[NSMutableDictionary alloc] init];


do
{

    NSString *key = [TBXML valueOfAttributeNamed:@"key" forElement:itemElement];
    NSString *label = [TBXML valueOfAttributeNamed:@"label" forElement:itemElement];

    NSString *sev = [TBXML valueOfAttributeNamed:@"sev" forElement:itemElement];

    NSString *time = [TBXML valueOfAttributeNamed:@"time" forElement:itemElement];
    NSString *data = [TBXML valueOfAttributeNamed:@"data" forElement:itemElement];
    //NSLog(@"Key = %@ : Label = %@ : Sev = %@ : Time = %@ : Data = %@", key, label, sev, time, data);
    NSArray *array = [[NSArray alloc] initWithObjects:label,sev, time, data, nil];

    [loggerData setObject:array forKey:key];

} while ((itemElement = itemElement->nextSibling));

編集

に変更NSString *data = [TBXML valueOfAttributeNamed:@"data" forElement:itemElement];すると、 NSString *itemValue = [TBXML textForElement:itemElement];うまくいきました!!! ありがとうありがとう :)

4

1 に答える 1