【问题标题】:XML to object deserializationXML到对象反序列化
【发布时间】:2017-04-19 01:19:47
【问题描述】:

我正在尝试反序列化以下 XML

    -<Tables>


     -<StaticGroups>


        -<StaticGroup Name="111">


            -<Table>

                <TableName>Table1 Name</TableName>

                <TableTag>Table1 Tag</TableTag>

            </Table>
            -<StaticGroup Name="111.1">


                -<Table>

                    <TableName>Table1.1 Name</TableName>

                    <TableTag>Table1.1 Tag</TableTag>

                </Table>
            </StaticGroup>
        </StaticGroup>
    </StaticGroups>    
</Tables>

嵌套的 StaticGroup Name="111.1" 由于某种原因没有反序列化。

类如下

[XmlRoot("Tables")]
    public class TablesXML
    {
        public TablesXML()
        {
            StaticTablesGroups = new List<StaticTablesGroup>();
        }


        [XmlArray("StaticGroups")]
        [XmlArrayItem("StaticGroup", typeof(StaticTablesGroup))]
        public List<StaticTablesGroup> StaticTablesGroups { get; set; }

    }

    public class StaticTablesGroup
    {
        public StaticTablesGroup()
        {
            GroupTables = new List<GroupTable>();
            StaticTablesGroups = new List<StaticTablesGroup>();
        }

        [XmlAttribute("Name")]
        public string Name { get; set; }

        //[XmlArray("StaticGroup")]
        [XmlElement("Table", typeof(GroupTable))]
        public List<GroupTable> GroupTables { get; set; }


        [XmlElement("StaticGroup")]
        public List<StaticTablesGroup> StaticTablesGroups { get; set; }   
    }
    public class GroupTable
    {

        [XmlElement("TableName")]
        public string Name { get; set; }
        [XmlElement("TableTag")]
        public string Tag { get; set; }


    }

第一个 Name ="111" 的 StaticGroup 成功反序列化,但 Name = "111.1" 的嵌套 StaticGroup 没有成功

我做错了什么。请帮忙

【问题讨论】:

  • 我无法重现您的问题。也许您还应该发布反序列化代码。

标签: c# .net xml wpf serialization


【解决方案1】:

如果您的问题与反序列化有关,发布您的反序列化代码可能是一个想法,您不觉得吗?

无论如何,这对我来说很好:

string xml = "<Tables><StaticGroups><StaticGroup Name=\"111\"><Table><TableName>Table1 Name</TableName><TableTag>Table1 Tag</TableTag></Table><StaticGroup Name=\"111.1\"><Table><TableName>Table1.1 Name</TableName><TableTag>Table1.1 Tag</TableTag></Table></StaticGroup></StaticGroup></StaticGroups></Tables>";
XmlSerializer serializer = new XmlSerializer(typeof(TablesXML));
TablesXML tablesXml;
using (TextReader reader = new StringReader(xml))
{
    tablesXml = (TablesXML)serializer.Deserialize(reader);
}

【讨论】:

  • 你完全正确。实际问题出在未显示嵌套组的 XAML 树视图演示中。非常感谢您的帮助。如果在设计时
  • 如果您还有其他问题,请提出新问题。
【解决方案2】:

你错过了“表”-XML-object 的结束语句

【讨论】:

    【解决方案3】:

    我认为您缺少结束标记 &lt;/Tables&gt;

    编辑:您始终可以验证您的 XML 以发现问题...快速谷歌搜索,我发现 this one 指责同样的问题

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 2021-12-18
      • 1970-01-01
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多