在属性名称上反序列化xml作为我在C#中的类的属性

时间:2013-05-22 06:28:45

标签: c# xml xmlserializer

我有像我在下面描述的xml文件

<Root name="myRoot">
    <Field name = "myField">"blabla</Field>
    <List name="data">
        <Row name="data">
            <Field name="Field1">sample</Field>
            <Field name="Field2">sample</Field>
        </Row>     
    </List>
</Root>

我想将此xml文件映射到此类:

public class Row
{
    public string Field1
    {
        get;set;
    }

    public string Field2
    {
        get;set;
    }
}

我的问题是如何将atrribute名称映射到“Row”类的属性? 顺便说一下,我能够根据标签(Field)映射到“Row”类的属性。 我的观点是如何使用额外条件进行映射,该条件具有字段标记上的属性名称值?

抱歉我的英语。

提前致谢。

1 个答案:

答案 0 :(得分:1)

没有内置的xml序列化程序(特别是XmlSerializerDataContractSerializer)都不允许您使用属性的映射到成员。属性的名称 - 确定(例如<cust id="12345" name="Fred"/>) - 但不是您的<Field name="Field2">...</Field>

因此,您必须使用XmlDocumentXDocumentXmlReader等内容手动执行此操作。或者,也许可以通过xslt运行它来将它变成XmlSerializer 可以处理的东西,即你可以构造(通过xslt):

<myRoot>
    <myField>"blabla</myField>
    <data>
        <data>
            <Field1>sample</Field1>
            <Field2>sample</Field2>
        </data>
    </data>
</myRoot>

(特别是使用<xsl:element name="@name">