Проверка XML уязвима для информации о культуре?
-
06-07-2019 - |
Вопрос
За день до завершения проекта я столкнулся со сложной проблемой: у меня есть служба 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;
}
я не могу сказать валидатору, каким должен быть разделитель в double. единственное решение, о котором я могу подумать, - это просто указать в xsd, что проблемное значение VaR является строкой, а затем программно проверить, является ли оно двойным числом с точкой или комой.
Решение
спецификация схемы XML указывает, что числа с плавающей запятой представляются с использованием точка и не запятая. Локаль не влияет на действительный XML.
Вы не включили свою ошибку. Надеюсь, он жалуется, что в числе есть запятая.