Comparazione strutture XML

Buongiorno,
in fase di lettura di due xml con struttura identica tramite un applicativo sviluppato in c# ritorna un errore ad una determinata riga, se apro il file non noto nessuna differenza.
Dimentico qualcosa?
Grazie.

… eccome ti possiamo rispondere ?
se alleghi i file xml ( eventualmente nascondendo i dati sensibili), magari qualcuno potrà aiutarti…

Hai perfettamente ragione.
Come li allego?

Ciao, la riga dove rileva l’errore:
<FormatoTrasmissione>FPR12</FormatoTrasmissione>

Errore rilevato:
Errore nel documento XML (11, 5).

La riga è corretta,
evidentemente, non si trova posizionata nel posto giusto.
Inserisci tutta la parte della testata, sicuramente qualcuno potrà aiutarti alla soluzione.

Ciao, la testata del documento

<?xml version="1.0" encoding="windows-1252"?>
<?xml-stylesheet type="text/xsl" href="fatturapa_v1.2.xsl"?>
<p:FatturaElettronica
  versione="FPR12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

Per capire il problema servono più informazioni.

  • Da dove provengono i due file xml? Li avete prodotti voi? Li ha prodotti un altro software? Sono passati attraverso il SdI (e quindi hanno passato la loro validazione)?
  • Dalla domanda non si capisce bene, ma i due file danno entrambi errore, oppure uno sì e l’altro no?
  • Hai provato a validare i file con qualche tool di verifica dell’XML o sul sito dell’Agenzia delle Entrate? Magari ti danno un messaggio di errore più utile.

L’errore è un errore di lettura del file XML e non di validazione con lo schema. In questo caso, cose come l’ordine o il nome degli elementi non hanno molta importanza, c’è qualche problema a livello di XML.

  • Come lo leggete il file con C#? Fate la deserializzazione? In questo caso il problema potrebbero essere le classi che avete definito in C# e non il file stesso.

Per poterti dire qualcosa di più servirebbe tutto il contenuto del file fino al punto dove si incastra. Sei sicuro che sia la riga che hai postato? L’errore dice che il problema sta alla riga 11, posizione 5, che, se la riga fosse quella, è nel mezzo del nome dell’elemento, il che mi pare molto strano.

non intendevo solo le due righe iniziali…
almeno devi mettere l’intera sezione “DatiTrasmissione”,
sezione che contiene il tag che ti da l’errore…

• Da dove provengono i due file xml? Li avete prodotti voi? Li ha prodotti un altro software? Sono passati attraverso il SdI (e quindi hanno passato la loro validazione)?
• Dalla domanda non si capisce bene, ma i due file danno entrambi errore, oppure uno sì e l’altro no?
• Hai provato a validare i file con qualche tool di verifica dell’XML o sul sito dell’Agenzia delle Entrate? Magari ti danno un messaggio di errore più utile.
L’errore è un errore di lettura del file XML e non di validazione con lo schema. In questo caso, cose come l’ordine o il nome degli elementi non hanno molta importanza, c’è qualche problema a livello di XML.
• Come lo leggete il file con C#? Fate la deserializzazione? In questo caso il problema potrebbero essere le classi che avete definito in C# e non il file stesso.
Per poterti dire qualcosa di più servirebbe tutto il contenuto del file fino al punto dove si incastra. Sei sicuro che sia la riga che hai postato? L’errore dice che il problema sta alla riga 11, posizione 5, che, se la riga fosse quella, è nel mezzo del nome dell’elemento, il che mi pare molto strano.


<?xml version="1.0" encoding="windows-1252"?>
<?xml-stylesheet type="text/xsl" href="fatturapa_v1.2.xsl"?>
<p:FatturaElettronica
  versione="FPR12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <FatturaElettronicaHeader>
    <DatiTrasmissione>
      <IdTrasmittente>
        <IdPaese>SM</IdPaese>
        <IdCodice>03473</IdCodice>
      </IdTrasmittente>
      <ProgressivoInvio>2/16</ProgressivoInvio>
      <FormatoTrasmissione>FPR12</FormatoTrasmissione>
      <CodiceDestinatario>KRRH6B9</CodiceDestinatario>
    </DatiTrasmissione>

Ho sostituito tutta la tua testata, ad un mio file di fattura, ed il controllo non da alcun problema.
Per me il file è PERFETTO. (almeno la parte che hai postato).

25112020

Concordo con @Neapolis, la fattura sembra a posto. Secondo me il problema sta in come la leggi da C#.
Cosa succede se provi a leggerla con questo semplice codice?

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(“nomefile.xml”);
Console.WriteLine(“Elemento root: {0}”, xmlDoc.DocumentElement.Name);

Ti allego il file

<?xml version="1.0" encoding="windows-1252"?>
<?xml-stylesheet type="text/xsl" href="fatturapa_v1.2.xsl"?>
<p:FatturaElettronica
  versione="FPR12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <FatturaElettronicaHeader>
    <DatiTrasmissione>
      <IdTrasmittente>
        <IdPaese>SM</IdPaese>
        <IdCodice>03473</IdCodice>
      </IdTrasmittente>
      <ProgressivoInvio>2/16</ProgressivoInvio>
      <FormatoTrasmissione>FPR12</FormatoTrasmissione>
      <CodiceDestinatario>KRRH6B9</CodiceDestinatario>
    </DatiTrasmissione>
    <CedentePrestatore>
      <DatiAnagrafici>
        <IdFiscaleIVA>
          <IdPaese>IT</IdPaese>
          <IdCodice>08827381008</IdCodice>
        </IdFiscaleIVA>
        <CodiceFiscale>08827381008</CodiceFiscale>
        <Anagrafica>
          <Denominazione>ROSSELLA S.R.L.</Denominazione>
        </Anagrafica>
        <RegimeFiscale>RF01</RegimeFiscale>
      </DatiAnagrafici>
      <Sede>
        <Indirizzo>V. GHETALDI MARINO,88/96</Indirizzo>
        <CAP>00143</CAP>
        <Comune>ROMA</Comune>
        <Provincia>RM</Provincia>
        <Nazione>IT</Nazione>
      </Sede>
      <IscrizioneREA>
        <Ufficio>RM</Ufficio>
        <NumeroREA>1120424</NumeroREA>
        <CapitaleSociale>10000.00</CapitaleSociale>
        <SocioUnico>SM</SocioUnico>
        <StatoLiquidazione>LN</StatoLiquidazione>
      </IscrizioneREA>
      <Contatti>
        <Email>rossellasrl_2006@libero.it</Email>
      </Contatti>
    </CedentePrestatore>
    <CessionarioCommittente>
      <DatiAnagrafici>
        <IdFiscaleIVA>
          <IdPaese>IT</IdPaese>
          <IdCodice>05594711003</IdCodice>
        </IdFiscaleIVA>
        <CodiceFiscale>05594711003</CodiceFiscale>
        <Anagrafica>
          <Denominazione>SC S.R.L.</Denominazione>
        </Anagrafica>
      </DatiAnagrafici>
      <Sede>
        <Indirizzo>VIA G. BIONDI, 15</Indirizzo>
        <CAP>00143</CAP>
        <Comune>ROMA</Comune>
        <Provincia>RM</Provincia>
        <Nazione>IT</Nazione>
      </Sede>
    </CessionarioCommittente>
    <TerzoIntermediarioOSoggettoEmittente>
      <DatiAnagrafici>
        <IdFiscaleIVA>
          <IdPaese>SM</IdPaese>
          <IdCodice>03473</IdCodice>
        </IdFiscaleIVA>
        <Anagrafica>
          <Denominazione>Passepartout S.p.A</Denominazione>
        </Anagrafica>
      </DatiAnagrafici>
    </TerzoIntermediarioOSoggettoEmittente>
    <SoggettoEmittente>TZ</SoggettoEmittente>
  </FatturaElettronicaHeader>
  <FatturaElettronicaBody>
    <DatiGenerali>
      <DatiGeneraliDocumento>
        <TipoDocumento>TD01</TipoDocumento>
        <Divisa>EUR</Divisa>
        <Data>2020-10-06</Data>
        <Numero>2/16</Numero>
        <ImportoTotaleDocumento>         436.92</ImportoTotaleDocumento>
      </DatiGeneraliDocumento>
      <DatiTrasporto>
        <UnitaMisuraPeso>Kg</UnitaMisuraPeso>
        <PesoLordo>36.40  </PesoLordo>
        <DataOraRitiro>2020-10-06T10:58:00</DataOraRitiro>
        <DataInizioTrasporto>2020-10-06</DataInizioTrasporto>
      </DatiTrasporto>
    </DatiGenerali>
    <DatiBeniServizi>
      <DettaglioLinee>
        <NumeroLinea>1</NumeroLinea>
        <CodiceArticolo>
          <CodiceTipo>PROPRIETARIO</CodiceTipo>
          <CodiceValore>5</CodiceValore>
        </CodiceArticolo>
        <Descrizione>LIEVITI</Descrizione>
        <Quantita>           240.000000</Quantita>
        <UnitaMisura>N.</UnitaMisura>
        <PrezzoUnitario>             0.400000</PrezzoUnitario>
        <PrezzoTotale>                96.00</PrezzoTotale>
        <AliquotaIVA>10.00</AliquotaIVA>
      </DettaglioLinee>
      <DettaglioLinee>
        <NumeroLinea>2</NumeroLinea>
        <CodiceArticolo>
          <CodiceTipo>PROPRIETARIO</CodiceTipo>
          <CodiceValore>4</CodiceValore>
        </CodiceArticolo>
        <Descrizione>CROSTATE</Descrizione>
        <Quantita>            36.400000</Quantita>
        <UnitaMisura>KG</UnitaMisura>
        <PrezzoUnitario>             8.000000</PrezzoUnitario>
        <PrezzoTotale>               291.20</PrezzoTotale>
        <AliquotaIVA>10.00</AliquotaIVA>
      </DettaglioLinee>
      <DettaglioLinee>
        <NumeroLinea>3</NumeroLinea>
        <CodiceArticolo>
          <CodiceTipo>PROPRIETARIO</CodiceTipo>
          <CodiceValore>6</CodiceValore>
        </CodiceArticolo>
        <Descrizione>TORTE DI FRUTTA</Descrizione>
        <Quantita>             2.000000</Quantita>
        <UnitaMisura>N.</UnitaMisura>
        <PrezzoUnitario>             5.000000</PrezzoUnitario>
        <PrezzoTotale>                10.00</PrezzoTotale>
        <AliquotaIVA>10.00</AliquotaIVA>
      </DettaglioLinee>
      <DatiRiepilogo>
        <AliquotaIVA>10.00</AliquotaIVA>
        <ImponibileImporto>397.20         </ImponibileImporto>
        <Imposta>39.72          </Imposta>
        <EsigibilitaIVA>I</EsigibilitaIVA>
      </DatiRiepilogo>
    </DatiBeniServizi>
    <DatiPagamento>
      <CondizioniPagamento>TP02</CondizioniPagamento>
      <DettaglioPagamento>
        <ModalitaPagamento>MP05</ModalitaPagamento>
        <DataScadenzaPagamento>2020-10-06</DataScadenzaPagamento>
        <ImportoPagamento>436.92</ImportoPagamento>
        <IstitutoFinanziario>BANCO DI SARDEGNA SPA</IstitutoFinanziario>
        <IBAN>IT80F0101503205000070153560</IBAN>
        <ABI>01015</ABI>
        <CAB>03205</CAB>
      </DettaglioPagamento>
    </DatiPagamento>
  </FatturaElettronicaBody>
</p:FatturaElettronica>

Grazie, provo a fare un test.

L’errore

Formato della stringa di input non corretto.

Ma è un FormatException? Te lo dà sulla riga del WriteLine? Forse hai copiato male il codice, o fatto un errore nel correggere le virgolette intelligenti che il forum ha inserito. Forse dovevo usare il teso preformattato:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("nomefile.xml");
Console.WriteLine("Elemento root: {0}", xmlDoc.DocumentElement.Name);

Comunque il file, così come l’hai postato qui, il programmino lo legge senza problemi e stampa:

Elemento root: p:FatturaElettronica

L’ho anche validato con l’xsd e non ha rilevato problemi.

Potresti per favore inviarmi la porzione di codice per leggere l’xml?
Grazie.

Scusate, questo è il codice:
Foglio = @“C:\Users\Fabio\xxx\xxx\XML\ROSSELLA FE\SM03473_3HIzK.xml”;
DatiFattura.FatturaElettronica fatturaElettronica = new DatiFattura.FatturaElettronica();
XmlSerializer serializzare = new XmlSerializer(typeof(DatiFattura.FatturaElettronica));

        StreamReader readerLettura = new StreamReader(Foglio, Encoding.UTF8);
        fatturaElettronica = (DatiFattura.FatturaElettronica)serializzare.Deserialize(readerLettura);
        readerLettura.Close();

Come sospettavo è un problema di deserializzazione. La fattura in sé è a posto.
Quel errore può venire fuori se si sbagliano le annotazioni per la serializzazione XML, quindi penso che il problema sia nella classe DatiFattura.FatturaElettronica . Purtroppo non sono un esperto di serializzazione delle classi C# in XML.
Ho provato a generare le classi dal file xsd (usando il tool xsd.exe) e sono riuscito a deserializzare il tuo file senza problemi. Più di così, non so dirti.