2012-04-23 11 views
0

オブジェクトをシリアル化してxmlドキュメントを作成しようとしています。私は問題を見つけました。Xmlシリアル化C#、配列のコンテンツプレースホルダ

ターゲット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> 

である代わりに、私は私がC#でこれを行うことができますどのようにこの

<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> 

のような結果のXMLをしたいですか? ありがとう

答えて

0

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

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

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

それが動作する場合、それはあなたがそれをチェックアウトする必要があり、itemsSerializable財産を必要とせずにまた働くかもしれない可能性があります。