Question

un jour avant la fin du projet, je rencontre un problème complexe: je dispose d’un service WTF et de trois applications client. Le service a trois méthodes, chacune recevant un document XML en tant qu'argument et renvoyant un document XML. c'est comme ça qu'ils communiquent. J'ai des fichiers xsd pour valider les xml générés et reçus. jusqu'à aujourd'hui tout a bien fonctionné. J'ai des fenêtres polonaises et aujourd'hui, je lance mon application sur des fenêtres anglaises. Comme vous l'avez probablement compris jusque-là, mon application m'a indiqué que le fichier XML reçu n'est pas valide. Je l'ai vérifiée et la valeur de VaR supposée doubler dans le xml a été écrite avec un point (ou un coma, je ne m'en souviens pas mais cela ne fonctionnait pas). Je me demande maintenant - existe-t-il une bonne solution à ce problème? je veux dire que je valide xml comme ceci:

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

il n’ya aucun moyen que je puisse dire au validateur ce que le séparateur en double devrait être. La seule solution à laquelle je puisse penser est simplement de spécifier dans xsd que la valeur problématique de la VaR est une chaîne, puis de vérifier par programmation s'il s'agit d'un nombre double, avec un point ou une virgule.

Était-ce utile?

La solution

La spécification de schéma XML indique que les nombres à virgule flottante sont représentés par une période et ne pas utiliser une virgule. Les paramètres régionaux n’ont aucune incidence sur le code XML valide.

Vous n'incluez pas votre erreur. Espérons qu’il se plaint de la virgule dans un nombre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top