Из Можно ли использовать LINQ для поиска пропусков в отсортированном списке? :
var strings = new string[] { "7", "13", "8", "12", "10", "11", "14" };
var list = strings.OrderBy(s => int.Parse(s));
var result = Enumerable.Range(list.Min(), list.Count).Except(list).First(); // 9
По сути, упорядочить список. Затем создайте массив последовательных чисел (1,2,3...
) от минимума до максимума. Проверьте пропущенные значения в списке и возьмите первое. Это первое пропущенное число.
XML может обрабатывать практически любой символ, но есть диапазоны, управляющие коды и тому подобное , которых не будет.
Лучше всего, если вы можете Не заставить их исправить свой вывод - это очистить необработанные данные, которые вы получаете. Вам необходимо заменить недопустимые символы указанным вами форматом ссылки на символы.
(Вы даже не можете прибегать к CDATA, поскольку там нет способа избежать этих символов.)
Мусор на входе, мусор на выходе. Если удаленное приложение отправляет вам мусор, это все, что вы получите. Если они думают, что отправляют XML, их нужно исправить. В этом случае вы не окажете им никакой пользы, работая над их ошибкой.
Вы также должны убедиться в том, что они думают, что отправляют. Что для них значила% 1С? Что они хотели?
Если вы действительно не можете исправить исходные данные XML, подумайте о том, чтобы применить подход, подобный тому, который я описал в этот ответ . По сути, вы создаете подкласс TextReader (например, StripTextReader), который обертывает существующий TextReader (tr) и отбрасывает недопустимые символы.
ИМХО, лучшим решением было бы изменить код / программу / все, что создало недопустимый XML, который подается в вашу программу. К сожалению, это не всегда возможно. В этом случае вам нужно экранировать все символы <0x20, прежде чем пытаться загрузить документ.
Будет что-то из того, что описано в этом сообщении блога , может быть полезным?
По сути, он создает очищающий поток xml.
Если ваш ввод не является XML, вы должны использовать что-то вроде Tidy или Tagsoup, чтобы устранить беспорядок.
Они будут принимать любой ввод и пытаться, надеюсь, создать полезную модель DOM из это.
Я не знаю, как называются соответствующие библиотеки темной стороны.