0
我有如下所示的XSD:序列化對象(具有包含xsd複合類型創建的)的返回的complexType作爲元件
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Example1">
<xs:complexType>
<xs:sequence>
<xs:element name="Example2" type="Example2Type" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="Example2Type">
<xs:sequence>
<xs:element name="Field1" type="xs:int"/>
<xs:element name="Field2" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
使用VS2010,我已經把這個XSD成類看起來像這樣:
using System;
using System.Diagnostics;
using System.Xml.Serialization;
using System.Collections;
using System.Xml.Schema;
using System.ComponentModel;
using System.Collections.Generic;
public partial class Example1
{
private List<Example2Type> example2Field;
public Example1()
{
this.example2Field = new List<Example2Type>();
}
public List<Example2Type> Example2
{
get
{
return this.example2Field;
}
set
{
this.example2Field = value;
}
}
}
public partial class Example2Type
{
private int field1Field;
private int field2Field;
public int Field1
{
get
{
return this.field1Field;
}
set
{
this.field1Field = value;
}
}
public int Field2
{
get
{
return this.field2Field;
}
set
{
this.field2Field = value;
}
}
}
我現在想用上面的類創建一些對象。我使用以下代碼執行此操作:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Example1 test = new Example1();
test.Example2 = new List<Example2Type>();
test.Example2.Add(new Example2Type());
test.Example2[0].Field1 = 2;
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(test.GetType());
x.Serialize(Console.Out, test);
Console.ReadLine();
}
}
}
現在生成的XML看起來與我所期望的不同。現在看起來是這樣的:
<Example1>
<Example2>
<Example2Type>
<Field1></Field1>
<Field2></Field2>
</Example2Type>
</Example2>
</Example1>
爲什麼Example2Type元素添加在這裏,我怎樣才能防止這種情況發生?