我有一個類。我想將XML文件反序列化到這個類中。XML解串數組
public partial class Form1 : Form
{
public string xmlFile;
public Form1()
{
InitializeComponent();
xmlFile = "Sample.xml";
}
[Serializable]
public class Application
{
public string AppName;
public string UpdateDetail;
};
[Serializable]
public class Applications
{
[XmlElement]
public Application[] Application;
};
[Serializable]
public class Pmsp_Update
{
public string OldVersion;
public string NewVersion;
public Applications Applications;
};
private void btnRead_Click(object sender, EventArgs e)
{
XmlReader reader = XmlReader.Create(xmlFile);
XmlSerializer ser = new XmlSerializer(typeof(Pmsp_Update));
Pmsp_Update pu;
using (reader = XmlReader.Create(xmlFile))
{
pu = (Pmsp_Update)ser.Deserialize(reader);
}
}
}
這裏是XML:
<Pmsp_Update>
<OldVersion>v4.0.0</OldVersion>
<NewVersion>v4.0.1</NewVersion>
<Applications>
<Application>
<AppName>SampleApp</AppName>
<UpdateDetail>sample</UpdateDetail>
</Application>
</Applications>
</Pmsp_Update>
我想請教一下屬性。我只用[Serializable]
屬性,我可以上課。我沒有使用任何[XmlElement]
屬性,除了一個之外,這不會導致任何錯誤。
如果我使用這樣我可以填充該數組,但:
[Serializable]
public class Applications
{
[XmlElement]
public Application[] Application;
};
如果我使用這樣我可以不填充數組:
[Serializable]
public class Applications
{
public Application[] Application;
};
所以,我的問題是這樣的:我不使用[XmlElement]
字段,一切正常,但我無法填充數組。爲什麼我不能使用[XmlElement]
填充數組,雖然我可以填充字段?
''[Serializable]'與'XmlSerializer'沒有任何關係。它啓用二進制序列化。 –
如果我不使用[Serializable]我怎樣才能讓類被序列化。而我的問題不是關於[Serializable]。但是,謝謝 –
XML序列化沒有*啓用*。它*只是工作*。各種* [Xml ...] *屬性在這裏進一步控制細節。 –