I have an API function to upload xml files and it will return it as a object. It's made to read Italy's digital invoice (which is basically an xml file) but it says it's invalid.
InvalidOperationException: <FatturaElettronica xmlns='http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2'> was not expected.
The function is:
[HttpPost]
public ActionResult PostFile(IFormFile upload)
{
XmlSerializer ser = new XmlSerializer(typeof(FatturaElettronica));
Stream memStream = upload.OpenReadStream();
FatturaElettronica fe = (FatturaElettronica)ser.Deserialize(memStream);
return Ok();
}
Where FatturaElettronica is the xml model/class. Here is the xml sample I used.
And here is the class (the first part)
using System.Xml.Serialization;
namespace backEnd.Models
{
[XmlRoot("FatturaElettronica")]
public class FatturaElettronica
{
[XmlElement("FatturaElettronicaHeader")]
public FatturaElettronicaHeader FatturaElettronicaHeader { get; set; }
[XmlArray("FatturaElettronicaBody")]
public FatturaElettronicaBody[] FatturaElettronicaBody { get; set; }
}
}
Which contains sub-classes like FatturaElettronicaHeader (structured like the xml file)
using System.Xml.Serialization;
namespace backEnd.Models
{
public class FatturaElettronicaHeader
{
[XmlElement("DatiTrasmissione")]
public DatiTrasmissione DatiTrasmissione { get; set; }
[XmlElement("CedentePrestatore")]
public CedentePrestatore CedentePrestatore { get; set; }
[XmlElement("RappresentanteFiscale")]
public RappresentanteFiscale? RappresentanteFiscale { get; set; }
[XmlElement("CessionarioCommittente")]
public CessionarioCommittente CessionarioCommittente { get; set; }
[XmlElement("TerzoIntermediarioOSoggettoEmittente")]
public TerzoIntermediarioOSoggettoEmittente? TerzoIntermediarioOSoggettoEmittente { get; set; }
[XmlElement("SoggettoEmittente")]
public string? SoggettoEmittente { get; set; }
}
}