Проверка XML уязвима для информации о культуре?

StackOverflow https://stackoverflow.com/questions/425341

  •  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.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top