在C#中,如何反序列化包含元素列表的XML文档,而不使用周围的列表元素
希望这是一个答案非常简单的问题,但我找不到。我有一个小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>
<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
属性放入,您明确描述了如何将其序列化为带有包装容器的数组