1

我有以下 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:jerry.seinfeld@domain.com)</Helper>
        <ErrorMessage>email address is incorrect. the format should be: ex: jerry.seinfeld@domain.com</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>

当我说盲目时,这意味着每次我添加一个成员时FieldTranslations,如果有名称匹配,它将被反序列化而无需明确执行任何操作。

4

1 回答 1

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

对类进行一次调整(类名和根元素名不完全匹配):

[XmlRoot("FieldsTranslations")]
public class FieldTranslations
{
    // ... your code as before
}
于 2013-11-10T22:17:05.610 回答