0

オブジェクトをシリアル化して xml ドキュメントを作成しようとしています。問題に遭遇しました。

ターゲット xml 構造は、HTML ページに似ています。いくつかの属性を持つフォーム要素があり、テキストフィールド、ボタンなどのコントロールをいくつでも持つことができます。この構造のために作成するオブジェクトを以下に示します。これらすべてのコントロールを追加するために、items という配列リストを使用しています。オブジェクトがシリアル化されると、すべてのコントロールがタグ内に表示されます。コントロールをフォーム要素の直接の子として表示したい。これどうやってするの?

   [XmlInclude(typeof(Lstatic))]

    [XmlInclude(typeof(textField))]

    public class form
    {
        [XmlAttribute]
        public String action
        {
            get;
            set;
        }

        [XmlAttribute]
        public String method
        {
            get;
            set;
        }

        [XmlAttribute]
        public String name
        {
            get;
            set;
        }

        [XmlArray]
        public ArrayList items
        {
            get;
            set;
        }

    }

これが結果の XML です

<form name="login" method="get" action="/FetchIndex.asmx/findAddresses"> 
<items> 
<anyType value="Please key in your details:" xsi:type="Lstatic"/> 
<anyType name="postCode" value="" xsi:type="textField" size="10" label="Postcode:" hint="Enter your postcode"/> 
</items> 
</form>

代わりに、このような結果のxmlが必要です

<form name="login" method="get" action="/FetchIndex.asmx/findAddresses"> 

    <anyType value="Please key in your details:" xsi:type="Lstatic"/> 
    <anyType name="postCode" value="" xsi:type="textField" size="10" label="Postcode:" hint="Enter your postcode"/> 

    </form>

c#でこれを行うにはどうすればよいですか? ありがとう

4

1 に答える 1

0

このコードはテストされていません、申し訳ありませんが、それは私が覚えているものだけです。XmlElement属性が必要だと思います。

[XmlElement("AnyType")]
public object[] itemsSerializable
{
    get { return items.ToArray(); }
    set { items = new ArrayList(value); }
}

[XmlIgnore]
public ArrayList items
{
    get;
    set;
}

動作する場合は、プロパティを必要とせずに動作する可能性がありitemsSerializableますので、チェックしてみてください。

于 2012-04-23T14:00:10.450 に答える