【问题标题】:Problem with deserialization xml in c# (list object) [closed]c#(列表对象)中的反序列化xml问题[关闭]
【发布时间】:2019-10-04 05:44:30
【问题描述】:
<root>
    <child id="1">
       <child1 id="1"/>
       <child2>
           <child11 id="1">
               <child111 id="1"/>
           </child11>
    </child2>
   </child>
    <child id="2">
       <child1 id="2"/>
    </child>
</root>

我怎样才能使用反序列化得到上面的确切结构

【问题讨论】:

  • 欢迎来到stackoverflow。请花一分钟时间回答tour,尤其是How to Ask,以及edit您的问题。

标签: c# xml xsd xml-serialization xsd2code


【解决方案1】:

您可以将上面的实体大致形式化为:

using System;
using System.Xml.Serialization;
using System.Collections.Generic;

namespace WorkingProject
{
    [XmlRoot(ElementName="child1")]
    public class Child1 {
        [XmlAttribute(AttributeName="id")]
        public string Id { get; set; }
    }

    [XmlRoot(ElementName="child111")]
    public class Child111 {
        [XmlAttribute(AttributeName="id")]
        public string Id { get; set; }
    }

    [XmlRoot(ElementName="child11")]
    public class Child11 {
        [XmlElement(ElementName="child111")]
        public Child111 Child111 { get; set; }
        [XmlAttribute(AttributeName="id")]
        public string Id { get; set; }
    }

    [XmlRoot(ElementName="child2")]
    public class Child2 {
        [XmlElement(ElementName="child11")]
        public Child11 Child11 { get; set; }
    }

    [XmlRoot(ElementName="child")]
    public class Child {
        [XmlElement(ElementName="child1")]
        public Child1 Child1 { get; set; }
        [XmlElement(ElementName="child2")]
        public Child2 Child2 { get; set; }
        [XmlAttribute(AttributeName="id")]
        public string Id { get; set; }
    }

    [XmlRoot(ElementName="root")]
    public class Root {
        [XmlElement(ElementName="child")]
        public List<Child> Child { get; set; }
    }

}

然后您可以使用 XmlSerializer 类将 XML 字符串转换为 Root 类实例(您可以在必要时修改名称)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 2021-03-28
    • 2018-10-03
    • 2020-10-31
    相关资源
    最近更新 更多