Проверка XML уязвима для информации о культуре? - PullRequest
0 голосов
/ 08 января 2009

за день до завершения проекта я сталкиваюсь со сложной проблемой: у меня есть служба wtf и 3 клиентских приложения, использующих ее. Сервис имеет три метода, каждый из которых получает документ XML в качестве аргумента и возвращает документ XML. это то, как они общаются. У меня есть несколько файлов XSD для проверки сгенерированных и полученных XML. до сегодняшнего дня все работало нормально. У меня есть польские окна, и сегодня я запускаю свое приложение на английских окнах. как вы, вероятно, уже поняли, я получил сообщение из своего приложения о том, что полученный xml недействителен. я проверил это, и значение VaR, которое, как предполагалось, было двойным в xml, было написано с точкой (или кома, я не помню, но это не работало). мне интересно сейчас - есть ли хорошее решение для этой проблемы? я имею в виду, что я проверяю xml следующим образом:

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

я никак не могу сказать валидатору, каким должен быть разделитель в двойнике. единственное решение, о котором я могу подумать, - это просто указать в xsd, что проблемное значение VaR является строкой, а затем программно проверить, является ли оно двойным числом с точкой или комой.

1 Ответ

2 голосов
/ 08 января 2009

Спецификация XML-схемы указывает, что числа с плавающей запятой представляются с использованием точки и без запятой. Локаль не влияет на действительный XML.

Вы не включили свою ошибку. Надеюсь, он жалуется, что в числе запятая.

...