Pregunta

un día antes del final del proyecto me encuentro con un problema complicado: tengo un servicio wtf y 3 aplicaciones cliente que lo usan. El servicio tiene tres métodos, cada uno de los cuales recibe un documento xml como argumento y devuelve el documento xml. así es como se comunican. Tengo algunos archivos xsd para validar los xml generados y recibidos. Hasta hoy todo funcionó bien. Tengo Windows polaco y hoy ejecuto mi aplicación en Windows en inglés. Como probablemente se dio cuenta hasta aquí, recibí un mensaje de mi aplicación que indica que el xml recibido no es válido. Lo verifiqué y el valor de VaR que se suponía que era doble en el xml se escribió con punto (o coma, no recuerdo pero no estaba funcionando). Me pregunto, ¿hay alguna buena solución para este problema? quiero decir que valido xml de esta manera:

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;
        }

no hay forma de que pueda decirle al validador cuál debería ser el separador en doble. la única solución que se me ocurre es simplemente especificar en xsd que el valor de VaR problemático es una cadena y luego verificar programáticamente si es un número doble, con punto o coma.

¿Fue útil?

Solución

La especificación del esquema XML especifica que los números de coma flotante se representan usando un punto y no usar una coma. La configuración regional no tiene ningún efecto sobre lo que es XML válido.

No incluye su error. Esperemos que se queje de que haya una coma en un número.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top