Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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#_Arrays_Xml Serialization - Fatal编程技术网

C# XML反序列化和松散数组项

C# XML反序列化和松散数组项,c#,arrays,xml-serialization,C#,Arrays,Xml Serialization,因此,我正在处理一些我认为最有可能是格式错误的XML文件,我正在尝试找出如何以及是否可以使用XmlSerializer将这些XML反序列化为逻辑业务对象。假设我有以下XML文件: <Root> <ArrayType1 Name="Bob"/> <ArrayType1 Name="Jim"/> <ArrayType2 Name="Frank"> <SubItem Value="4"/> </Arr

因此,我正在处理一些我认为最有可能是格式错误的XML文件,我正在尝试找出如何以及是否可以使用XmlSerializer将这些XML反序列化为逻辑业务对象。假设我有以下XML文件:

<Root>
   <ArrayType1 Name="Bob"/>
   <ArrayType1 Name="Jim"/>
   <ArrayType2 Name="Frank">
      <SubItem Value="4"/>
   </ArrayType2>
   <ArrayType2 Name="Jimbo">
      <SubItem Value="2"/>
   </ArrayType2>
</Root>

现在我想创建一个具有这三种类型的类,Root、ArrayType1和ArrayType2,但我想在Root中得到两个列表,一个包含ArrayType1项的集合,另一个包含ArrayType2项的集合,但是这些项似乎需要某种根,例如,我知道如何反序列化以下内容:

<Root>
   <ArrayType1Collection>
      <ArrayType1 Name="Bob"/>
      <ArrayType1 Name="Jim"/>
   </ArrayType1Collection>
   <ArrayType2Collection>
      <ArrayType2 Name="Frank">
         <SubItem Value="4"/>
      </ArrayType2>
      <ArrayType2 Name="Jimbo">
         <SubItem Value="2"/>
      </ArrayType2>
   </ArrayType2Collection>
</Root>

但是如果没有围绕ArrayType元素的父ArrayType集合元素,我将如何反序列化它

XML序列化程序会允许这样做吗?

这不只是:

[Serializable]
public class Root {
    [XmlElement("ArrayType1")]
    public List<ArrayType1> ArrayType1 {get;set;}

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

再看看生成的foo.cs

再次过度复杂化。。。谢谢。:)这里的XmlElements是否应该读取,例如,
ArrayType1
ArrayType1Collection
?当我查看OP的第二个XML片段时,我看到一个名为
ArrayType1Collection
XmlElements
。当我查看代码片段时,我看到一个名为
ArrayType1
XmlElement
,它本质上是一组
类型为
ArrayType1
对象。我希望
XmlElement
的名称为
ArrayType1Collection
(因为这是包含
ArrayType1
类型子元素的元素名称)。
xsd foo.xml
xsd foo.xsd /classes