2012-04-18 10 views
2
[Serializable] 
public class XX 
{ 
    [XmlAttribute("name")] 
    public string name{get;set;} 
} 

[Serializable] 
[XmlRoot("tree")] 
public class XY 
{ 
    public XX Name{get;set;} 

    [XmlAttribute("surname")] 
    public Surname{get;set;} 
} 

こんにちは、上記のクラスのようなものをXMLにシリアル化しようとしています。私の問題は、XXクラスのプロパティを、XmlElementとしてではなく、XYクラスのシリアル化の属性としてシリアル化する必要があることです。それが可愛いかどうか誰もが知っていますか?私はあなたがこれを行うことができないと思いますC#Xmlシリアライゼーション:クラスプロパティを親クラスの属性としてシリアル化する

<tree surname="Thompson"> 
    <name>Jack</name> 
</tree> 
+0

これを行う方法はありません。また、あなたは '[Serializable]'を必要としません –

答えて

0

おそらく、必要なxmlを反映するようにクラス構造を調整する必要があります。 "name"が要素 "tree"の属性の場合、理想的には "name"という文字列を "XY"クラスのプロパティとし、 "XX"というクラスは全く存在しません。

しかし、実際にこれらのクラスが存在する必要がある場合は、サロゲートとして機能する第3のクラスを作成することをお勧めします。これは、XMLに一致する構造を持ち、XYクラスあなたの新しいクラスに翻訳されます。次に、XYとXXの代わりに新しいクラスを直列化します。

+0

ありがとう、それは解決策ではありませんでしたが、解決策に手を差し伸べるのに便利でした! – mariaoialvarez

0

<tree name="Jack" surname="Thompson"> 
</tree> 

私はこれをしたいドント:ここに明確にするために は、結果がすべきxmlファイルの一例です。 XMLの構造は、シリアライザーにどのように動作させるかを知らせるものです。親オブジェクトにnameという名前の属性としてマークされたプロパティがある場合、シリアライザはどちらを使用するかを知りません。

関連する問題