将具有相同名称的不同xml元素反序列化为不同的C#类

我有一些包含两个general元素的 XML,每个元素包含不同的信息。例如:


<overview>

    <general> <!-- General 01 -->

        <datetime></datetime>

        <location></location>

    </general>

    <instance>

        <general> <!-- General 02 -->

            <instanceid></instanceid>

            <instancetype></instancetype>

        </general>

    </instance>

    <instance>

        ....

    </instance>

</overview>

通过Xml2CSharp.com运行此 XML 后,两个不同general元素中的信息将合并为一个类,例如:


[XmlRoot(ElementName="general")]

public class General {

    [XmlElement(ElementName="datetime")]

    public string Datetime { get; set; }

    [XmlElement(ElementName="location")]

    public string Location { get; set; }

    [XmlElement(ElementName="instanceid")]

    public string Instanceid { get; set; }

    [XmlElement(ElementName="instancetype")]

    public string Instancetype { get; set; }

}

是否可以为这些general元素创建两个不同的类(因为它们各自包含不同的信息),并指定应该使用哪个?例如:


[XmlRoot(ElementName="overview/general")]

public class OverviewGeneral {

    [XmlElement(ElementName="datetime")]

    public string Datetime { get; set; }

    [XmlElement(ElementName="location")]

    public string Location { get; set; }

}

[XmlRoot(ElementName="instance/general")]

public class InstanceGeneral {

    [XmlElement(ElementName="instanceid")]

    public string Instanceid { get; set; }

    [XmlElement(ElementName="instancetype")]

    public string Instancetype { get; set; }

}


江户川乱折腾
浏览 157回答 1
1回答

呼啦一阵风

您已关闭以实现结果,您需要为每个属性分配适当的类类型,例如[XmlRoot(ElementName = "instance")]public class Instance{&nbsp; &nbsp; [XmlElement(ElementName = "general")]&nbsp; &nbsp; public InstanceGeneral General { get; set; }&nbsp; //<= InstanceGeneral&nbsp; Use Here}[XmlRoot(ElementName = "overview")]public class Overview{&nbsp; &nbsp; [XmlElement(ElementName = "general")]&nbsp; &nbsp; public OverviewGeneral General { get; set; }&nbsp; //<= OverviewGeneral Use Here&nbsp; &nbsp; [XmlElement(ElementName = "instance")]&nbsp; &nbsp; public Instance Instance { get; set; }}
打开App,查看更多内容
随时随地看视频慕课网APP