Преобразование между 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 и Какао, но я бы не стал возражать против некоторых чисто Си-функций. Я бы даже использовал препроцессор, если это единственный способ.