C# 我的反序列化XML列表<&燃气轮机;是空的

C# 我的反序列化XML列表<&燃气轮机;是空的,c#,xml-deserialization,C#,Xml Deserialization,我在从XML从反序列化PN填充列表时遇到问题 这是我的类对象(在客户端上): 这是XML: <Groups> <Group> <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> <Name>Todays Work</Name> <Description>System</Description> </Group&

我在从XML从反序列化PN填充列表时遇到问题

这是我的类对象(在客户端上):

这是XML:

<Groups>
  <Group>
  <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
  <Name>Todays Work</Name> 
  <Description>System</Description> 
</Group>
<Group>
  <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
  <Name>All</Name>  
  <Description>System</Description> 
</Group>
<Group>
  <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
  <Name>Unassigned</Name> 
  <Description>System</Description> 
 </Group>    
</Groups>

00000000-0000-0000-0000-000000000000 
今天的工作
系统
00000000-0000-0000-0000-000000000000 
全部的
系统
00000000-0000-0000-0000-000000000000 
未分配
系统

我没有收到任何错误,但对象计数为零?

您的输入XML格式错误。如果我构造对象并序列化它,我得到

<Groups>
<Items>
    <Group>
        <GroupRef>bf2616d7-b98c-4743-8e25-2e0e101ab2da</GroupRef>
        <Name>test</Name>
        <Description>desc</Description>
    </Group>
</Items>
</Groups>

bf2616d7-b98c-4743-8e25-2e0e101ab2da
测试
描述

因此,您应该按照当前的设计将每个组包装起来。

您的输入XML格式错误。如果我构造对象并序列化它,我得到

<Groups>
<Items>
    <Group>
        <GroupRef>bf2616d7-b98c-4743-8e25-2e0e101ab2da</GroupRef>
        <Name>test</Name>
        <Description>desc</Description>
    </Group>
</Items>
</Groups>

bf2616d7-b98c-4743-8e25-2e0e101ab2da
测试
描述

因此,您应该按照当前的设计将每个组包装起来。

您的
XML
不能正确反映类
组的结构。将您的
XML
更改为

<Groups>
    <ArrayOfGroup>
        <Group>
          <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
          <Name>Todays Work</Name> 
          <Description>System</Description> 
        </Group>
        <Group>
          <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
          <Name>All</Name>  
          <Description>System</Description> 
        </Group>
        <Group>
          <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
          <Name>Unassigned</Name> 
          <Description>System</Description> 
         </Group>
    </ArrayOfGroup>
</Groups>

或者,您可以将XML中的标记命名为“Items”,并将
XmlArray
属性重命名为“Items”,就像最初那样。

您的
XML
不能正确反映类
组的结构。将您的
XML
更改为

<Groups>
    <ArrayOfGroup>
        <Group>
          <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
          <Name>Todays Work</Name> 
          <Description>System</Description> 
        </Group>
        <Group>
          <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
          <Name>All</Name>  
          <Description>System</Description> 
        </Group>
        <Group>
          <GroupRef>00000000-0000-0000-0000-000000000000</GroupRef> 
          <Name>Unassigned</Name> 
          <Description>System</Description> 
         </Group>
    </ArrayOfGroup>
</Groups>

或者,您可以将XML中的标记命名为“Items”,并将
XmlArray
属性重命名为“Items”,就像最初一样。

问题在于属性组上使用的属性。 使用您定义的属性,所有XML元素“Group”都需要包含在名为“Items”的元素中

解决方案很简单,只需使用xmlement属性,如下所示。将属性更改为使用XmlElement(“组”)后,它应该可以工作

public class Groups
{
    public Groups()
    {
        group = new List<Group>();
    }

    [XmlElement("Group")]
    public List<Group> group { get; set; }
}
公共类组
{
公共团体()
{
组=新列表();
}
[XmlElement(“集团”)]
公共列表组{get;set;}
}

问题在于属性组上使用的属性。 使用您定义的属性,所有XML元素“Group”都需要包含在名为“Items”的元素中

解决方案很简单,只需使用xmlement属性,如下所示。将属性更改为使用XmlElement(“组”)后,它应该可以工作

public class Groups
{
    public Groups()
    {
        group = new List<Group>();
    }

    [XmlElement("Group")]
    public List<Group> group { get; set; }
}
公共类组
{
公共团体()
{
组=新列表();
}
[XmlElement(“集团”)]
公共列表组{get;set;}
}

您的xml结构中没有Items标记,但您将列表定义为Items@CSharpie嗨,谢谢你的评论。我在最后一刻添加了项目标签(绝望)。在那个加法之前,它给了我同样的结果。VisualStudio可以从xml@DmitryDovgopoly谢谢现在我将对此进行研究xml结构中没有Items标记,但是您将列表定义为Items@CSharpie嗨,谢谢你的评论。我在最后一刻添加了项目标签(绝望)。在那个加法之前,它给了我同样的结果。VisualStudio可以从xml@DmitryDovgopoly谢谢我现在就来研究这个问题:熟能生巧:)熟能生巧:)
public class Groups
{
    public Groups()
    {
        group = new List<Group>();
    }

    [XmlElement("Group")]
    public List<Group> group { get; set; }
}