【发布时间】:2017-04-13 05:06:29
【问题描述】:
我想将一个简单的 XML 文件序列化为对象:
<?xml version="1.0"?>
-<Tables>
-<StaticGroups>
-<StaticGroup Name="111">
-<Table>
<TableName>Table1 Name</TableName>
<TableTag>Table1 Tag</TableTag>
</Table>
-<Table>
<TableName>Table2 Name</TableName>
<TableTag>Table2 Tag</TableTag>
</Table>
</StaticGroup>
-<StaticGroup>
-<Table>
<TableName>Table3 Name</TableName>
<TableTag>Table3 Tag</TableTag>
</Table>
</StaticGroup>
</StaticGroups>
</Tables>
以下是类:
[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>();
}
[XmlAttribute("Name")]
public string Name { get; set; }
[XmlArray("StaticGroup")]
[XmlArrayItem("Table", typeof(GroupTable))]
public List<GroupTable> GroupTables { get; set; }
}
public class GroupTable
{
[XmlElement("TableName")]
public string Name { get; set; }
[XmlElement("TableTag")]
public string Tag { get; set; }
}
使用 Name 属性正确创建了 StaticGroup 列表。
问题是 Table/s(TableName 和 TableTag)由于某种原因没有序列化。我做错了什么?
谢谢
编辑#1 谢谢 Marc 帮助解决问题 #1
现在我正在尝试在另一个 StaicGroup 中添加 StaticGroup
-<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>
反序列化工作正常,但嵌套不从 XML 获取数据
修改了StaticTablesGroup类:
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", typeof(StaticTablesGroup))]
public List<StaticTablesGroup> StaticTablesGroups { get; set; }
}
但是,我按照 Marc 的建议检查了 Serialize,它工作正常
【问题讨论】: