Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML序列化节点出现两次_C#_Xml Serialization - Fatal编程技术网

C# XML序列化节点出现两次

C# XML序列化节点出现两次,c#,xml-serialization,C#,Xml Serialization,在我的c#代码中,我试图使用XML序列化而不是XML linq。我不知道哪一个更好 但现在我遇到的问题是,我的节点将出现两次。这就是我的班级结构 public class Enterprise { public Properties properties; public List<Person> person; } 公共级企业 { 公共财产; 公众人士名单; } 这是我生成的xml <?xml version="1.0" encoding="iso-8859

在我的c#代码中,我试图使用XML序列化而不是XML linq。我不知道哪一个更好

但现在我遇到的问题是,我的节点将出现两次。这就是我的班级结构

public class Enterprise
{
    public Properties properties;
    public List<Person> person;
}
公共级企业
{
公共财产;
公众人士名单;
}
这是我生成的xml

<?xml version="1.0" encoding="iso-8859-1"?>
<enterprise>
<properties lang="nb">
<Comments>Utlasting av LMS-data</Comments>
<Datasource>SIKT</Datasource>
<Target />
<Datetime>onsdag 24. oktober 2018</Datetime>
</properties>
<person>
<Person>
  <sourceid>
    <Source>AD</Source>
    <Id>123</Id>
  </sourceid>
  <Userid>mohsin</Userid>
</Person>

UTERTING av LMS数据
锡克特
onsdag 24。2018年奥克托伯
公元
123
莫辛

正如您所看到的,Person标签将出现两次。这就是它的设置方式

Enterprise enterprise = new Enterprise();
enterprise.properties.LanguageCode = "nb";
enterprise.properties.Comments = "Utlasting av LMS-data";
enterprise.properties.Datasource = "SIKT";
enterprise.properties.Target = "";
enterprise.properties.Datetime = DateTime.Now.ToLongDateString();

List<Person> person = new List<Person>();


person.Add(new Person
{
    //sourceid = new SourceId
    //{
    //    Id = "123",
    //    Source = "AD"
    //},
    Userid = "mohsin"
});

enterprise.person = person;
Enterprise=新企业();
enterprise.properties.LanguageCode=“nb”;
enterprise.properties.Comments=“UTAV LMS数据”;
enterprise.properties.Datasource=“SIKT”;
enterprise.properties.Target=“”;
enterprise.properties.Datetime=Datetime.Now.ToLongDateString();
列表人员=新列表();
添加(新的人)
{
//sourceid=新的sourceid
//{
//Id=“123”,
//Source=“AD”
//},
Userid=“mohsin”
});
enterprise.person=人;

有人知道原因吗?

当您使用列表或数组时,它将被视为“XmlArrayItem”,以克服“xmlement”的使用

public class Enterprise
{
  public Properties properties;
  [XmlElement("person")]
  public List<Person> person;
}
公共级企业
{
公共财产;
[XmlElement(“个人”)]
公众人士名单;
}

当您使用列表或数组时,它将被视为“XmlArrayItem”,以克服使用“XmlElement”

public class Enterprise
{
  public Properties properties;
  [XmlElement("person")]
  public List<Person> person;
}
公共级企业
{
公共财产;
[XmlElement(“个人”)]
公众人士名单;
}

您在人员列表中有人员。若您将person属性重命名为更有意义的person或person列表,您将看到发生了什么。但如何避免它?我不需要父元素包装所有的person?@mohsinali1317
只是默认行为-Baskar John的回答告诉您如何告诉它做一些不同的事情您有person-in-persons列表。若您将person属性重命名为更有意义的person或person列表,您将看到发生了什么。但如何避免它?我不需要父元素包装所有人?@mohsinali1317
只是默认行为-Baskar John的回答告诉您如何告诉它做一些不同的事情