Ich mag eine einfache XML-Datei zur Serialisierung zum Objekt:XML Serializer zum Objekt
<?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>
Im Folgenden sind Klassen:
[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; }
}
Liste der StaticGroup korrekt mit Name-Attribute erstellt.
Das Problem ist, dass Tabelle/s (TableName und TableTag) aus irgendeinem Grund nicht serialisiert sind. Was mache ich falsch?
Dank
Edit # 1 Danke Marc mit der Ausgabe # 1
Jetzt bin versucht, half ich StaticGroup in einer anderen StaicGroup
-<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>
Deserialize arbeitet direkt mit Ausnahme hinzufügen verschachtelt erhält keine Daten aus XML
modifizierte StaticTablesGroup Klasse:
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; }
}
jedoch überprüfte ich Serialize, wie Marc vorgeschlagen, und es worksfine
Danke für Ihnen helfen. ich möchte die XML ändern StaticGroup innerhalb StaticGroup I aufgenommen StaticTableGroup Klasse public class StaticTablesGroup modifizierte { ... [XmlArray ("StaticGroup")] [XmlArrayItem ("StaticGroup", typeof (StaticTablesGroup))] öffentliche Liste Untergruppe {get; einstellen; } } Untergruppen werden jedoch nicht deserialisiert. Was mache ich diesmal falsch? –
Vadim
@Vadim Profi-Tipp: Verwenden Sie 'Serialize' und schauen Sie, was es erzeugt; Vergleichen Sie das mit dem, was Sie wollten - das sollte Ihnen sagen, wo Sie suchen müssen. Schwer für mich, ohne ein vollständiges Beispiel zu kommentieren –
Vielen Dank für den Tipp. Beim Serialisieren sieht das XML genau wie erwartet aus, aber das Zurücklesen funktioniert nicht. – Vadim