Domanda

un giorno prima della fine del progetto ho riscontrato un problema complicato: ho un servizio wtf e 3 applicazioni client che lo utilizzano. il servizio ha tre metodi, ognuno dei quali riceve un documento XML come argomento e restituisce un documento XML. è così che comunicano. ho alcuni file xsd per convalidare i file XML generati e ricevuti. fino ad oggi tutto ha funzionato bene. ho windows polacco e oggi eseguo la mia applicazione su windows inglese. come probabilmente hai capito fino ad ora, ho ricevuto un messaggio dalla mia domanda che l'XML ricevuto non è valido. l'ho verificato e il valore VaR supposto essere doppio nell'xml è stato scritto con punto (o coma, non ricordo ma non funzionava). ora mi chiedo: c'è qualche buona soluzione per questo problema? intendo convalidare xml in questo modo:

public bool IsValid(XDocument xmlDocument, Stream xsdContent)
        {
            XmlSchemaSet schemaSet = new XmlSchemaSet();
            XmlReader reader = XmlReader.Create(xsdContent);
            schemaSet.Add(string.Empty, reader);

            valid = true;
            xmlDocument.Validate(schemaSet, (sender, eventt) => { valid = false; e
= eventt; });

            return valid;
        }

non posso assolutamente dire al validatore quale dovrebbe essere il separatore in doppio. l'unica soluzione che mi viene in mente è semplicemente specificare in xsd che il valore VaR problematico è una stringa e quindi verificare a livello di codice se si tratta di un doppio numero, con punto o coma.

È stato utile?

Soluzione

La Specifiche dello schema XML specifica che i numeri in virgola mobile sono rappresentati utilizzando un punto e non usare una virgola. Le impostazioni internazionali non influiscono su ciò che è XML valido.

Non includi il tuo errore. Spero che si stia lamentando che c'è una virgola in un numero.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top