Преобразование между C enum и XML

Какой самый простой способ сохранить перечисление в XML и снова прочитать его? Скажи, что у меня есть:

enum ETObjectType {ETNormalObjectType, ETRareObjectType, ETEssentialObjectType};

... и я хочу взять переменную,enum ETObjectType objectType = ETNormalObjectType;и преобразовать его в XML, который выглядит следующим образом:<objectType>ETNormalObjectType</objectType>.

В настоящее время я делаю что-то вроде этого:

NSString* const ETObjectTypeAsString[] = {@"ETNormalObjectType",@"ETRareObjectType",@"ETEssentialObjectType"};

[anXMLElement addChild:[NSXMLElement elementWithName:@"objectType" stringValue:ETObjectTypeAsString[objectType]]];

... но это не совсем идеально; Я не рад обновлять оба списка каждый раз, когда меняю свое перечисление. Но это приемлемо. Гораздо хуже, когда мы читаем XML обратно, для чего я сейчас и делаю:

if ([[[anXMLElement childNamed:@"objectType"] stringValue] isEqualToString:@"ETRareObjectType"])
{
    [self initObjectType:ETRareObjectType];
}
else if ([[[anXMLElement childNamed:@"objectType"] stringValue] isEqualToString:@"ETEssentialObjectType"])
{
    [self initObjectType:ETEssentialObjectType];
}
else
{
    [self initObjectType:ETNormalObjectType];
}

Тьфу! Это отвратительно меня. Должен быть, по крайней мере, более чистый способ чтения или, возможно, унифицированный способ чтения и записи?

Я использую Obj-C и Какао, но я бы не стал возражать против некоторых чисто Си-функций. Я бы даже использовал препроцессор, если это единственный способ.

Ответы на вопрос(5)

Ваш ответ на вопрос