Lo que se busca:
<DiarioContabilidad>
<Diario>
<NroDiario>0 </NroDiario>
<Nombre>ITFZLEASOFT </Nombre>
<DefContable>Recaudación Caja</DefContable>
<Lineas>
<Fecha>23/09/2019</Fecha>
<Asiento>15026</Asiento>
<Empresa>ECLE</Empresa>
<TipoCuenta>Contabilidad</TipoCuenta>
<Cuenta>110311031002</Cuenta>
<Descripcion>Pago Cuota 8</Descripcion>
<CentroCosto>016</CentroCosto>
<RutCliente>76092069-K </RutCliente>
<Debito>0,00</Debito>
<Credito>810767,00</Credito>
<Divisa>CLP</Divisa>
<TipoCambio>0</TipoCambio>
<Documento>0</Documento>
<TransBancaria>000</TransBancaria>
<ReferenciaPago>0</ReferenciaPago>
</Lineas>
<Lineas>
<Fecha>23/09/2019</Fecha>
<Asiento>15026</Asiento>
<Empresa>ECLE</Empresa>
<TipoCuenta>Contabilidad</TipoCuenta>
<Cuenta>110311031002</Cuenta>
<Descripcion>Pago Cuota 16</Descripcion>
<CentroCosto>016</CentroCosto>
<RutCliente>76092069-K </RutCliente>
<Debito>0,00</Debito>
<Credito>792988,00</Credito>
<Divisa>CLP</Divisa>
<TipoCambio>0</TipoCambio>
<Documento>0</Documento>
<TransBancaria>000</TransBancaria>
<ReferenciaPago>0</ReferenciaPago>
</Lineas>
</Diario>
</DiarioContabilidad>
Un sp devuelve la data, en un dataTable, como se consigue:
public XDocument CreateXmlContabilidad(DataTable dt)
{
try
{
XDocument voucher = new XDocument(new XDeclaration("1.0", "utf-8", "true"),
new XElement("DiarioContabilidad",
from cabecera in dt.AsEnumerable()
select
new XElement("Diario",
new XElement("NroDiario", cabecera["Num_lote"]),
new XElement("Nombre", cabecera["Nombre_lote"]),
new XElement("DefContable", cabecera["Desc_Comprobante"]),
from detalle in dt.AsEnumerable()
select
new XElement("Lineas",
new XElement("Fecha", detalle["Fecha_Comp"]),
new XElement("Asiento", detalle["Num_Comp"]),
new XElement("Empresa", detalle["Empresa"]),
new XElement("TipoCuenta", detalle["Tipo_Cuenta"]),
new XElement("Cuenta", detalle["Cod_Cuenta_LS"]),
new XElement("Descripcion", detalle["Glosa_Lin_Comp"]),
new XElement("CentroCosto", detalle["Dim_Finan1"]),
new XElement("RutCliente", detalle["Dim_Finan_Rut"]),
new XElement("Debito", detalle["Mto_debe_pesos"]),
new XElement("Credito", detalle["Mto_Haber_pesos"]),
new XElement("Divisa", detalle["Divisa"]),
new XElement("TipoCambio", detalle["Tipo_Cambio"]),
new XElement("Documento", detalle["Nro_Docto"]),
new XElement("TransBancaria", detalle["Tipo_Tr_Bco"]),
new XElement("ReferenciaPago", detalle["Ref_Pago"])))));
return voucher;
}
catch (Exception ex)
{
throw ex;
}
}
fuente: https://www.c-sharpcorner.com/blogs/convert-datatable-to-xml-string-using-linq1