Conversão entre enum e XML

Qual é a maneira mais limpa de armazenar um enum em XML e lê-lo novamente? Diga que eu tenho:

enum ETObjectType {ETNormalObjectType, ETRareObjectType, ETEssentialObjectType};

... e eu quero pegar uma variávelenum ETObjectType objectType = ETNormalObjectType;, e convertê-lo para XML que se parece com isso:<objectType>ETNormalObjectType</objectType>.

Atualmente o que estou fazendo é algo assim:

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

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

... mas isso não é inteiramente ideal; Eu não estou feliz em atualizar ambas as listas toda vez que eu mudo o meu enum. Mas é aceitável. Muito, muito pior é a leitura de XML de volta, para o qual estou fazendo atualmente isso:

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];
}

Que nojo! Isso me enoja. Tem que haver uma maneira mais limpa de ler, pelo menos, ou talvez uma maneira unificada de ler e escrever?

Estou usando o Obj-C e o Cocoa, mas não me importaria com algumas funções C puras. Eu até usaria material pré-processador, se é o único jeito.

questionAnswers(5)

yourAnswerToTheQuestion