在XML反序列化期间将数组项的位置存储在属性中的属性中

时间:2018-11-13 10:06:15

标签: c# xml-deserialization

在XML反序列化期间,是否有任何方法可以将XmlArrayItem的位置存储在类属性中的XmlArray中?

class PO {
  [XmlArray("POLines")]
  [XmlArrayItem("POLine")]
  List<PO_Line> LineItems {get;set;}
}

class PO_Line {
  [XmlElement("ItemCode")]
  string ItemCode {get;set;}
  [XmlElement("UnitCost")]
  string UnitCost {get;set;}
  [XmlElement("Quantity")]
  string Quantity {get;set;}

  int LineNo {get;set;}   // store index number of array item here
}

例如,在下面的PO文件中,将创建一个包含三个List<PO_Line>的新PO_Line。第一个将LineNo属性设置为1,第二个将其LineNo设置为2,第三个(可以预测)将其LineNo设置为3。

<POFile>
  <POHead>
    <PONumber>POR12345</PONumber>
    <Customer>ACME001</Customer>
  </POHead>
  <POLines>
    <POLine>
      <ItemCode>12345</ItemCode>
      <UnitCost>2.99</UnitCost>
      <Quantity>100</Quantity>
    </POLine>
    <POLine>
      <ItemCode>23456</ItemCode>
      <UnitCost>1.99</UnitCost>
      <Quantity>200</Quantity>
    </POLine>
    <POLine>
      <ItemCode>34567</ItemCode>
      <UnitCost>5.99</UnitCost>
      <Quantity>500</Quantity>
    </POLine>
  </POLines>
</POLine>

很明显,在XML反序列化之后,我可以遍历PO,但是我想知道是否有更干净的方法。

0 个答案:

没有答案