我正在MVC 5中编写Web API 2控制器。目前,我的XML输出如下所示:
<ArrayOfVoucher xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyAPI.Models">
<Voucher>
<VoucherDate>2018-04-04</VoucherDate>
<VoucherNumber>123</VoucherNumber>
<VoucherTransactions>
<VoucherTransaction>
<TransDate>2018-04-03</TransactionDate>
<TransType>GL</TransactionType>
</VoucherTransaction>
<VoucherTransaction>
<TransDate>2018-04-03</TransactionDate>
<TransType>GL</TransactionType>
</VoucherTransaction>
</VoucherTransactions>
<Voucher>
</ArrayOfVoucher>
但是,我正在努力说明它应该是这样的:
<ArrayOfVoucher xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MyAPI.Models">
<Voucher>
<VoucherDate>2018-04-04</VoucherDate>
<VoucherNumber>123</VoucherNumber>
<Transaction>
<TransDate>2018-04-03</TransactionDate>
<TransType>GL</TransactionType>
</Transaction>
<Transaction>
<TransDate>2018-04-03</TransactionDate>
<TransType>GL</TransactionType>
</Transaction>
<Voucher>
</ArrayOfVoucher>
注意差异。在第二个样本中:
VoucherTransaction
个节点未在名为“VoucherTransactions”的节点中组合在一起。VouncherTransaction
个节点名为Transaction
。我可以通过修改数据模型的定义来实现第二个(见下文),虽然我想知道是否有更好的方法,因为目前模型属性的名称是合理的。
我的主要问题与第一点有关。如何阻止VoucherTransaction
节点在VoucherTransactions
节点中分组?
这些是我的数据模型类:
券
public class Voucher
{
public string VoucherNumber { get; set; }
public DateTime VoucherDate { get; set; }
public List<VoucherTransaction> VoucherTransactions { get; set; }
}
VoucherTransaction
public class VoucherTransaction
{
public string TransType { get; set; }
public DateTime TransDate { get; set; }
}
目前创建列表的代码是:
foreach (SalesLedgerTransaction t in salesLedgerTransactions)
{
Voucher voucher = new Voucher
{
VoucherNo = "1",
VoucherDate = t.TransactionDate,
VoucherTransactions = new List<VoucherTransaction>()
};
VoucherTransaction arTransaction = new VoucherTransaction
{
TransType = "AR",
TransDate = t.TransactionDate
};
voucher.VoucherTransactions.Add(arTransaction);
VoucherTransaction glTransaction = new VoucherTransaction
{
TransType = "GL",
TransDate = t.TransactionDate
};
voucher.VoucherTransactions.Add(glTransaction);
vouchers.Add(voucher);
}
所以是的,如果有人可以帮助我操纵XML,那么凭证交易不会分组在一个很酷的子节点中。对于指定与模型属性(以及根节点的名称 - ArrayOfVoucher
不同的节点名称的帮助的额外赞赏也不符合规范。)。