2017-04-19 202 views
2

我想Deserilize以下XMLXML反对反序列化

-<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的名称=“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的,但嵌套StaticGroup的wihth NAME = “111.1” 不

我在做什么错。请帮助

+0

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

回答

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

您绝对正确。实际的问题是在XAML树视图演示文稿中没有显示嵌套组。非常感谢您的帮助。如何在TreeView HierarchicalDataTemplate中指定在设计时如果有多少嵌套组存在未知

+0

请问一个新的问题,如果你有另一个问题。 – mm8

0

我认为你缺少结束标记</Tables>

编辑:您可以随时验证XML发现问题...快速谷歌搜索,我发现this one被控同样的问题

+0

格式问题,标记为XML – Vadim

0

您错过了“Tables”的关闭语句-XML对象

+0

格式问题,标记为XML – Vadim