私のプロジェクトでは、レガシーコードは次の構造を持つxmlを生成します:
<Output>
<Template recordID=12>
<Employer type="String">
<Value>Google</Value>
<Value>GigaSoft inc.</Value>
</Employer>
<Designation type="String">
<Value>Google</Value>
</Designation>
<Duration type="String" />
</Template>
</Output>
このxmlを次のプロパティを持つオブジェクトに逆シリアル化したい(私はC#を使用しています):
public class EmployerInfo
{
string[] _employerName;
string[] _designation;
string _duration;
}
メンバーの周りの次の属性を使用して、上記のxmlを逆シリアル化しようとしました(注:コードを簡略化しました。データメンバーを公開しないでください。このコードは実験目的です)
[XmlElement("Template")]
public class EmployerInfo
{
[XmlElement("Employer")]
public string[] _employerName;
[XmlElement("Designation")]
public string[] _designation;
[XmlElement("Duration")]
public string _duration;
}
デシリアライズするために、メインクラスで私は書いた:
XmlSerializer serial = new XmlSerializer(typeof(Output));
TextReader reader = new StreamReader(@"C:\sample_xml.xml");
EmployerInfo fooBar = (EmployerInfo)serial.Deserialize(reader);
reader.Close();
上記のコードを実行すると、fooBarオブジェクトのすべてのメンバーがnull(デフォルト値)に設定されます。これは、xml構造がクラス構造と一致しないためだと思います。
xsdコマンドを使用してクラスを自動的に生成しようとしましたが、データメンバーごとに個別のクラスが作成されました。
XmlElement( "Employer.Value")、XmlElement( "Template.Employer.Value")のような要素名を付けようとしましたが、これも機能しませんでした。
EmployerInfo
誰かがこのxmlをクラスに適合させる方法を提案できますか?
前もって感謝します