c# - XML 到对象反序列化

标签 c# .net xml wpf serialization

我正在尝试反序列化以下 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"由于某种原因没有被反序列化。

类(class)如下

[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 没有反序列化

我做错了什么。请帮忙

最佳答案

如果您的问题与反序列化有关,那么发布您的反序列化代码可能是个好主意,您不觉得吗?

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

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);
}

关于c# - XML 到对象反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43484673/

相关文章:

c# - 关闭最后一个连接后,如何通过套接字监听传入连接?

.net - Action 链接内的渲染跨度

c# - 如何尽可能高效地处理大量并发磁盘写请求

java - Apache POI 删除 CTHyperlink [低级代码]

c# - 在 ListView UWP Windows 10 的每个 ListViewItem 的 DataTemplate 中访问 RelativePanel

c# - 停止/启动服务或关闭远程计算机上的 sql server 进程/服务

c# - 如何使用 IP 地址通过 SSL 协议(protocol)访问 WCF?

c# - 如何在 C# 中验证 PowerShell 脚本语法?

java - 第二次点击返回原文

xml - 使用 XSLT 进行简单的 XML 重构