2012-03-26 7 views
2

私は、同じXMLを読むためにSerializableクラスを作成しようとしているので、以下のXMLを取得しました(これは大きなXMLの一部です)。C#XML Serializable Collection

<BANKTRANLIST> 
    <DTSTART>20051001</DTSTART> 
    <DTEND>20051028</DTEND> 
    <STMTTRN> <!-- This element can repeat any number of times --> 
    <TRNTYPE>CHECK</TRNTYPE> 
    <DTPOSTED>20051004</DTPOSTED> 
    <TRNAMT>-200.00</TRNAMT> 
    </STMTTRN> 
    <STMTTRN> 
    <TRNTYPE>ATM</TRNTYPE> 
    <DTPOSTED>20051020</DTPOSTED> 
    <TRNAMT>-300.00</TRNAMT> 
    </STMTTRN> 
</BANKTRANLIST> 

私のC#実装

[Serializable] 
[XmlRoot("BANKTRANLIST", Namespace = "http://bank.net", IsNullable = false)] 
public class BankTransactionList 
{ 
    public BankTransactionList() 
    { 
     this.StatementTransactions = new List<StatementTransaction>(); 
    } 

    [XmlElement("DTSTART")] 
    public string StartDate { get; set; } 

    [XmlElement("DTEND")] 
    public string EndDate { get; set; } 

    [XmlArray("STMTTRN")] 
    [XmlArrayItem("STMTTRN")] 
    public List<StatementTransaction> StatementTransactions { get; set; } 
} 


[Serializable] 
[XmlRoot("STMTTRN", Namespace = "http://bank.net", IsNullable = false)] 
public class StatementTransaction 
{ 
    // TransactionType : ENUM 
    [XmlElement("TRNTYPE")] 
    public TransactionType TransactionType { get; set; } 

    [XmlElement("DTPOSTED")] 
    public string DatePosted { get; set; } 

    [XmlElement("TRNAMT")] 
    public double TransactionAmount { get; set; } 
} 

私の問題は以下の出力を得るために、結果の要素に再び包まれた要素である

... 
    <STMTTRN> <!-- This does not match my Original XML --> 
     <STMTTRN> 
     <TRNTYPE>CHECK</TRNTYPE> 
     <DTPOSTED>20051004</DTPOSTED> 
     <TRNAMT>-200.00</TRNAMT> 
     </STMTTRN> 
     <STMTTRN> 
     <TRNTYPE>ATM</TRNTYPE> 
     <DTPOSTED>20051020</DTPOSTED> 
     <TRNAMT>-300.00</TRNAMT> 
     </STMTTRN> 
    </STMTTRN> 

注:「([XmlArrayを削除しますリストプロパティのSTMTTRN ")]タグはこれを解決せず、代わりに

いずれかがある場合私または私にはよりよい解決策を教えてください素晴らしいです!

答えて

5

ラッパー要素なしアイテムごとの要素が必要な場合は[XmlElement]である必要があります:

[XmlElement("STMTTRN")] 
public List<StatementTransaction> StatementTransactions { get; set; } 
+0

スーパーありがとうございます! –