클래스가 있습니다. 이 클래스에 XML 파일을 deserialize하고 싶습니다.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>
내가 속성에 대해 물어보고 싶은 : 여기
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이다. 나는[Serializable]
속성 만 사용했고 클래스를 얻을 수 있습니다. 나는
[XmlElement]
속성을 사용하지 않았으며 하나만 제외하고 어떤 오류도 발생시키지 않았습니다.
I는 다음과 같이 사용하는 경우 나 배열을 채울 수 있지만 :이 같이 사용하는 경우
[Serializable]
public class Applications
{
[XmlElement]
public Application[] Application;
};
내가 배열을 채울 수 없습니다
[Serializable]
public class Applications
{
public Application[] Application;
};
그래서, 내 질문은 이것이다 : 필드에 [XmlElement]
을 사용하지 않고 모든 것이 잘 작동하지만 배열을 채울 수 없습니다. 필드를 채울 수는 있지만 [XmlElement]
을 사용하지 않으면 왜 배열을 채울 수 없습니까?
'[Serializable]'은'XmlSerializer'와 아무 관련이 없습니다. 이진 직렬화가 가능합니다. –
[Serializable]을 사용하지 않으면 어떻게 클래스를 직렬화 할 수 있습니까? 그리고 내 질문은 [Serializable]에 관한 것이 아닙니다. 하지만, 고마워요 –
XML 직렬화를위한 * enable *이 없습니다. 그것은 * 작동합니다. 다양한 * [Xml ...] * 속성은 세부 사항을 추가로 제어하기위한 것입니다. –