「DUE」と「RATE」をXmlSerializerでオブジェクトのリストにマップする必要がある次のXMLがあります。 0から多くのものがあり得ますが、それらは常に同じ "idx"とペアになります。リストに同じ名前のXML値
<INVOICE ID="4">
<STATUS>S</STATUS>
<TOTAL>6230.00</TOTAL>
<DUE idx="1">14.12.17</DUE>
<RATE idx="1">6230.00</RATE>
</INVOICE >
<INVOICE ID="5">
<STATUS>S</STATUS>
<TOTAL>3270.00</TOTAL>
<DUE idx="1">30.11.17</DUE>
<RATE idx="1">1090.00</RATE>
<DUE idx="2">07.12.17</DUE>
<RATE idx="2">1090.00</RATE>
<DUE idx="3">14.12.17</DUE>
<RATE idx="3">1090.00</RATE>
</INVOICE>
私は「レート」と「原因」のリストなしで正常に動作している以下の設定があります。
[Serializable]
public class UserInvoicesDto
{
[XmlElement("INVOICE")]
public List<UserInvoiceDto> Invoices { get; set; }
}
[Serializable, XmlRoot("INVOICE")]
public class UserInvoiceDto
{
[XmlAttribute("id")]
public int InvoiceId { get; set; }
[XmlElement("TOTAL")]
public string Total { get; set; }
}
をそして私は、以下のクラスを持っています。
[Serializable]
public class InvoicesDueDates
{
[XmlAttribute("idx")]
public string Id { get; set; }
[XmlElement("DUE")]
public string DueDate { get; set; }
[XmlElement("RATE")]
public string Rate { get; set; }
}
どういうことですか?あなたが使用することができ、単一InvoicesDueDates
コレクションにRate
とDue
リストを組み合わせることが、その後
[XmlRoot(ElementName = "DUE")]
public class DueDTO
{
[XmlAttribute(AttributeName = "idx")]
public string Idx { get; set; }
[XmlText]
public string Text { get; set; }
}
[XmlRoot(ElementName = "RATE")]
public class RateDTO
{
[XmlAttribute(AttributeName = "idx")]
public string Idx { get; set; }
[XmlText]
public decimal Text { get; set; }
}
[XmlRoot(ElementName = "INVOICE")]
public partial class InvoicesDTO
{
[XmlAttribute(AttributeName = "ID")]
public string Id { get; set; }
[XmlElement(ElementName = "STATUS")]
public string Status { get; set; }
[XmlElement(ElementName = "TOTAL")]
public decimal Total { get; set; }
[XmlElement(ElementName = "DUE")]
public List<DueDTO> Due { get; set; }
[XmlElement(ElementName = "RATE")]
public List<RateDTO> Rate { get; set; }
}
:あなたが唯一のデシリアライズに必要がある場合は
問題は[KeyValuePairのリストをXMLにシリアライズする](https://stackoverflow.com/a/30443169/3744182)または[Restart with Restricted Xml Sequence deserialization](https:// stackoverflow)の問題と非常によく似ています.com/a/32885108/3744182)。両方とも、 'XmlSerializer'を使用して、ペア要素のシーケンスを逆シリアル化する2つの異なる方法を示す回答があります。それらの答えは十分ですか、それとももっと助けが必要ですか? – dbc
デシリアライズするだけで済みますか、同じフォーマットで再シリアライズする必要はありますか? – dbc
シリアライゼーションとデシリアライズを行う[特定の順序でC#でXMLにパラレルアレイをシリアル化する](https://stackoverflow.com/q/47641622/3744182)も参照してください。 – dbc