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 クラスのシリアル化の属性としてシリアル化する必要があることです。それが可能かどうか誰でも知っていますか?? 明確にするために、結果として得られる xml ファイルの例を次に示します。

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

私はこれを望んでいません:

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

2 に答える 2

0

私はあなたがこれを行うことができるとは思わない。XML の構造は、シリアライザーにどのように動作するかを指示するものです。親オブジェクトで名前が付けられた属性としてマークされたプロパティがある場合、シリアライザーはどれを使用nameすればよいかわかりませんname

于 2012-04-18T14:57:24.247 に答える
0

おそらく、必要な xml を反映するようにクラス構造を調整する必要があります。「名前」が要素「ツリー」の単なる属性である場合、理想的には文字列「名前」をクラス「XY」のプロパティにし、クラス「XX」はまったく存在しないようにします。

ただし、これらのクラスが現在のように存在することが本当に必要な場合は、xml と一致する構造を持つサロゲートとして機能する 3 番目のクラスを作成し、それ自体を変換するクラス XY にメソッドを作成することをお勧めします。あなたの新しいクラスに。次に、XY と XX の代わりに新しいクラスをシリアル化します。

于 2012-04-18T14:58:00.377 に答える