gpt4 book ai didi

c# - 从 List 是实体的类创建 XML

转载 作者:太空宇宙 更新时间:2023-11-03 12:32:52 27 4
gpt4 key购买 nike

回答:

按照 Tim 的建议更改了类(class),效果非常好。

public class DatiBeniServizi1
{
[XmlElement]
public List<DettaglioLinee> DettaglioLinee { get; set; }

public DatiRiepilogo1 DatiRiepilogo { get; set; }
}

我正在尝试使用类创建 XML。下面是类

 public class DatiBeniServizi1
{
public List<DettaglioLinee> DettaglioLinee { get; set; }

public DatiRiepilogo1 DatiRiepilogo { get; set; }
}
public class DettaglioLinee
{
public int NumeroLinea { get; set; }
public string Descrizione { get; set; }
public int Quantita { get; set; }
public decimal PrezzoUnitario { get; set; }
public decimal PrezzoTotale { get; set; }
public decimal AliquotaIVA { get; set; }
public string Natura { get; set; }
}
public class DatiRiepilogo1
{
public decimal AliquotaIVA { get; set; }
public string Natura { get; set; }
public decimal ImponibileImporto { get; set; }
public decimal Imposta { get; set; }
public string RiferimentoNormativo { get; set; }
}

以及生成XML的代码

private DatiBeniServizi1 GetXMLExportInvoiceItemDetails(DataTable dtItemDetails, DataTable dtBatches)
{
DatiBeniServizi1 DatiBeniServizi12 = new DatiBeniServizi1();
List<DettaglioLinee> ItemDetails = new List<DettaglioLinee>();

int i = 1;
foreach (DataRow row in dtItemDetails.Rows)
{
DataRow[] rowList = dtBatches.Select("BatchItemID='" + row["ItemID"].ToString() + "'");
string BatchDetails = string.Empty;
if (rowList.Any())
{
foreach (DataRow dr in rowList)
{
BatchDetails = BatchDetails + " - " + "Batch No: " + dr["BatchNo"].ToString() + " Exp: " + Convert.ToDateTime(dr["Expiry Date"]).ToString("dd/MM/yy");
}
}
ItemDetails.Add(new DettaglioLinee
{
NumeroLinea = i,
Descrizione = row["Description"].ToString() + BatchDetails,
Quantita = Convert.ToInt32(row["Qty"]),
PrezzoUnitario = Convert.ToDecimal(row["Sell Price"]),
PrezzoTotale = Convert.ToDecimal(row["Amount"]),
AliquotaIVA = 0.00m,
Natura = "N4"
});
i++;
}
DatiBeniServizi12 = new DatiBeniServizi1
{
DettaglioLinee = ItemDetails,
DatiRiepilogo = new DatiRiepilogo1
{
AliquotaIVA = 0.00m,
Natura = "N4",
ImponibileImporto = Convert.ToDecimal(gvQuotationDetails.Rows[QuoteIndex].Cells["TotalQuoteAmount"].EditedFormattedValue),
Imposta = 0.00m,
RiferimentoNormativo = "rif normativo"
}
};

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xsd", "http://www.w3.org/2001/XMLSchema");
ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ns.Add("versione", "FPA12");
XmlSerializer serializer = new XmlSerializer(typeof(FatturaElettronica), "http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2");
serializer.Serialize(System.IO.File.Create(@"C:\JD Pics\Schema_fatturapa_v1.3.xml"),DatiBeniServizi12,ns);

}

最终输出是

<DatiBeniServizi>
**<DettaglioLinee>
<DettaglioLinee>**
<NumeroLinea>1</NumeroLinea>
<Descrizione>ACARBOSE TAB 100MG 90 - Batch No: 854697 Exp: 15/11/20</Descrizione>
<Quantita>5</Quantita>
<PrezzoUnitario>30.50</PrezzoUnitario>
<PrezzoTotale>152.50</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N4</Natura>
</DettaglioLinee>
<DettaglioLinee>
<NumeroLinea>2</NumeroLinea>
<Descrizione>AEROCHAMBER PLUS DEVICE INFANT/MASK - Batch No: 748569 Exp: 23/11/20 - Batch No: 45789 Exp: 23/11/20</Descrizione>
<Quantita>400</Quantita>
<PrezzoUnitario>1.13</PrezzoUnitario>
<PrezzoTotale>452.00</PrezzoTotale>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N4</Natura>
**</DettaglioLinee>
</DettaglioLinee>**
<DatiRiepilogo>
<AliquotaIVA>0.00</AliquotaIVA>
<Natura>N4</Natura>
<ImponibileImporto>604.50</ImponibileImporto>
<Imposta>0.00</Imposta>
<RiferimentoNormativo>rif normativo</RiferimentoNormativo>
</DatiRiepilogo>
</DatiBeniServizi>

所以从上面的 XML 来看,除了在 ** 中突出显示的部分外,一切都符合我们的要求

<DettaglioLinee>
<DettaglioLinee>

如您所见,节点是重复的,这不是要求。

最佳答案

这应该有效。它导致列表以平面结构输出——没有封闭的 DettaglioLinee 元素

[XmlElement] 
List<DettaglioLinee> ItemDetails = new List<DettaglioLinee>();

关于c# - 从 List<ItemDetails> 是实体的类创建 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com