コードの ObservableCollection を XML ファイルにシリアライズしようとしています。これを行うと、結果の XML は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfCode xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Code>
<AccpacCode>ORWC</AccpacCode>
<LAC>94199999999999999</LAC>
<SCSCode>WC</SCSCode>
</Code>
<Code>
<AccpacCode>AK9999</AccpacCode>
<LAC>90299999999999999</LAC>
<SCSCode>UI</SCSCode>
<ParentEmployerAccpacCode>AKSUTA</ParentEmployerAccpacCode>
</Code>
<Code>
<AccpacCode>AL0014</AccpacCode>
<LAC>90107307000999999</LAC>
<SCSCode>IT</SCSCode>
</Code>
<Code>
<AccpacCode>IN0006</AccpacCode>
<LAC>91817599999999999</LAC>
<SCSCode>IT</SCSCode>
</Code>
Codes
の代わりにタグが必要であることを除けば、これで問題ありませんArrayOfCode
。タグ名の指定方法を教えてください。
コードモデルは次のとおりです。
namespace SerializeObservableCollection.Model
{
[Serializable()]
public class Codes
{
public Codes() { }
[XmlElement("Code")]
public ObservableCollection<Code> CodeCollection { get; set; }
}
[Serializable()]
public class Code
{
[XmlElement("AccpacCode")]
public string AccpacCode { get; set; }
[XmlElement("LAC")]
public string LAC { get; set; }
[XmlElement("SCSCode")]
public string SCSCode { get; set; }
[XmlElement("ParentEmployerAccpacCode")]
public string ParentEmployerAccpacCode { get; set; }
}
}
シリアル化を行うコードは次のとおりです。
private void SaveToXML()
{
try
{
XmlSerializer _serializer = new XmlSerializer(typeof(ObservableCollection<Code>));
using (StreamWriter _writer = new StreamWriter(@"LocalCodes.xml"))
{
_serializer.Serialize(_writer, CodeCollection);
}
}
catch (Exception ex)
{
}
}