Оптимизация валидации xml

224
28 января 2018, 00:12

Обмениваюсь документами со сторонним сервисом. Все документы в формате XML. Если что-то идет не так, сервис сообщает об ошибке также с помощью XML специального формата (у меня есть его xsd-схема). Форматов документов очень много, но при каждом запросе я точно знаю какой формат будет иметь ответ (если не будет ошибки).

Я написал следующий метод для проверки успешности запроса:

void CheckErrorSchema(string text)
{
    var settings = new XmlReaderSettings { ValidationType = ValidationType.Schema };
    using (var sr = new StringReader(Properties.Resources.ErrorSchema)) // xsd-схема сообщения об ошибке
    using (var xr = XmlReader.Create(sr))
        settings.Schemas.Add(null, xr);
    using (var sr = new StringReader(text))
    using (var xr = XmlReader.Create(sr, settings))
    {
        try
        {
            var doc = XDocument.Load(xr);
            throw new MyException(...);
        }
        catch (XmlSchemaValidationException) { }
    }
}

Т.е. после получения ответа, я вызываю этот метод и если он выполнился нормально, то десериализую ответ в нужный мне формат.

Мне не нравится, что сейчас я загружаю документ и если его загрузка бросает исключение, то я его подавляю и считаю что всё нормально. А если документ загрузился без проблем, то я бросаю исключение. Ошибки бывают достаточно редко (порядка 1% случаев).

Как можно это оптимизировать?

READ ALSO
SignalR отправить клиенту PartialView

SignalR отправить клиенту PartialView

Через функцию "addNewOrder" клиент получает модель для вставки, а что бы ее вставить в страницу использует ajax что бы получить PartialView в виде html

219
C# и кодировка UTF8

C# и кодировка UTF8

Есть таблица в MySQLВ ней данные в одном поле хранятся в UTF-8

227
Как создать 2 разных сервиса в 1 проекте?

Как создать 2 разных сервиса в 1 проекте?

Добрый деньПишем новый проект

211