2013-11-10 3 views
1

я следующий XML, и я хочу, чтобы десериализации вслепую к этому классу:XML список десериализации из членов класса

public class FieldTranslations 
{ 
    public FieldTranslation FirstName { get; set; } 
    public FieldTranslation LastName { get; set; } 
    public FieldTranslation Email { get; set; } 
    public FieldTranslation PhoneNumber { get; set; } 
    public FieldTranslation Country { get; set; } 
} 

public class FieldTranslation 
{ 
    public string Title { get; set; } 
    public string Helper { get; set; } 
    public string ErrorMessage { get; set; } 
} 

XML:

<FieldsTranslations> 
    <FirstName> 
     <Title>First Name</Title> 
     <Helper>please insert your first name</Helper> 
     <ErrorMessage>First name is suppose to be more that 2 characters</ErrorMessage> 
    </FirstName> 

    <LastName> 
     <Title>Last Name</Title> 
     <Helper>please insert your last name</Helper> 
     <ErrorMessage>Last name is suppose to be more that 2 characters</ErrorMessage> 
    </LastName> 

    <Email> 
     <Title>Email</Title> 
     <Helper>please insert your email address (ex:[email protected])</Helper> 
     <ErrorMessage>email address is incorrect. the format should be: ex: [email protected]</ErrorMessage> 
    </Email> 

    <PhoneNumber> 
     <Title>Phone Number</Title> 
     <Helper>Please insert your phone number ex:(972) 14262315</Helper> 
     <ErrorMessage>Phone number is incorrect see example: (972) 14262315 </ErrorMessage> 
    </PhoneNumber> 

    <Country> 
     <Title>Country</Title> 
     <Helper>Please choose your country of residence</Helper> 
     <ErrorMessage>Country must be chosen</ErrorMessage> 
    </Country> 
</FieldsTranslations> 

Когда я говорю, слепо это означает, что каждый time Im добавляет член к FieldTranslations, если есть совпадение имени, он будет десериализован без явно чего-либо.

ответ

3
var serializer = new XmlSerializer(typeof(FieldTranslations)); 
var obj = (FieldTranslations)serializer.Deserialize(source); 

с одной подстройкой к классам (где имя класса и имя элемента корня не точное совпадение):

[XmlRoot("FieldsTranslations")] 
public class FieldTranslations 
{ 
    // ... your code as before 
} 
+0

Спасибо, гладким и эффективным! – Shazam

Смежные вопросы