次のXMLにはネストされたオブジェクトがあり、Stepオブジェクトの埋め込みリストでXMLをデシリアライズするときにエラーが発生します。ネストされた埋め込みオブジェクトを持つオブジェクトにXMLを変換する
[XmlRoot(ElementName="comp")]
public class Comp
{
[XmlAttribute(AttributeName="ref")]
public string Ref { get; set; }
[XmlAttribute(AttributeName="dir")]
public string Dir { get; set; }
}
[XmlRoot(ElementName="step")]
public class Step
{
[XmlElement(ElementName="comp")]
public Comp Comp { get; set; }
[XmlAttribute(AttributeName="name")]
public string Name { get; set; }
[XmlElement(ElementName="step")]
public Step Step { get; set; }
}
[XmlRoot(ElementName="steps")]
public class Steps
{
[XmlElement(ElementName="step")]
public Step Step { get; set; }
}
マイXML:
<steps>
<step name="2.3 Upper">
<step name="2.3.1 Upper">
<comp ref="15.txt" dir="D:\test" />
<comp ref="16.txt" dir="D:\test2" />
</step>
<step name="2.3.2 Upper" >
<comp ref="19.txt" dir="D:\test" />
<comp ref="29.txt" dir="D:\test2" />
</step>
</step>
</steps>
更新:より多くのネストされたステップのための新しいXMLファイル。
<steps>
<step name="2.3 Upper">
<step name="2.3.1 Upper">
<step name="2.3.1.1 Upper">
<comp ref="10.txt" dir="D:\test" />
</step>
<comp ref="15.txt" dir="D:\test" />
<comp ref="16.txt" dir="D:\test2" />
</step>
<step name="2.3.2 Upper" >
<comp ref="19.txt" dir="D:\test" />
<comp ref="29.txt" dir="D:\test2" />
</step>
</step>
</steps>
私は次のエラーの乗り心地を得るためにどのようにあなたの助けを聞いても:
'Step': member names cannot be the same as their enclosing type
私はこのエラーにこだわっています。私は本当にあなたの助けに感謝します。
しかし、この方法では、内側の手順を、彼らはより多くの '' Steps''に保存されていないだろうしているとき。右? –
'Steps'オブジェクトを' List '型のプロパティに変更し、' Step'オブジェクトをこのリストに挿入することができます。必要であれば、 'Step'プロパティーを内部に持つこともできます。単一の' Step'プロパティーを持たずに、より多くのステップを含めることができます。あなたの階層は以下のようになります:ステップ>ステップ>ステップ>ツリーに深く入るステップ –
良いアイデア。あなたのコードを更新していただけますか? –