Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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,希望这是一个答案非常简单的问题,但我找不到。我有一个小XML文档,大致如下所示: <aa> <bb><name>bb1</name></bb> <bb><name>bb2</name></bb> <bb><name>bb3</name></bb> </aa> <aa> <bbs>

希望这是一个答案非常简单的问题,但我找不到。我有一个小XML文档,大致如下所示:

<aa>
  <bb><name>bb1</name></bb>
  <bb><name>bb2</name></bb>
  <bb><name>bb3</name></bb>
</aa>
<aa>
  <bbs>
    <bb><name>bb1</name></bb>
    <bb><name>bb2</name></bb>
    <bb><name>bb3</name></bb>
  </bbs>
</aa>
当我尝试使用XmlSerializer反序列化文档时,我得到一个带有空bbs属性的aa对象。 据我所知,这是因为我在bbs属性上使用的属性告诉序列化程序需要这样的文档:

<aa>
  <bb><name>bb1</name></bb>
  <bb><name>bb2</name></bb>
  <bb><name>bb3</name></bb>
</aa>
<aa>
  <bbs>
    <bb><name>bb1</name></bb>
    <bb><name>bb2</name></bb>
    <bb><name>bb3</name></bb>
  </bbs>
</aa>

bb1
bb2
bb3

鉴于我无法更改接收到的XML的格式,有没有办法告诉XmlSerialiser需要一个未包装在另一个标记中的数组?

[XmlArray]
/
[XmlArrayItem]
更改为
[XmlElement]
,这会告诉序列化程序元素没有包装器,例如

[XmlRoot("aa")]
public class aa
{
  [XmlElement("bb")]
  public bb[] bbs;
}

public class bb
{
  [XmlElement("name")]
  public string Name;
}

尝试将
[XmlArray(“bbs”)]
[XmlArrayItem(“bb”)]
属性替换为单个[XmlElement]属性

[XmlRoot("aa")]
public class aa
{
  [XmlElement("bb")]
  public bb[] bbs;
}

public class bb
{
  [XmlElement("name")]
  public string Name;
}
通过将
Array
ArrayItem
属性放入,您明确描述了如何将其序列化为带有包装容器的数组