Исключение XML: недопустимый символ (символы)

Из Можно ли использовать 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...) от минимума до максимума. Проверьте пропущенные значения в списке и возьмите первое. Это первое пропущенное число.

13
задан Chau 27 January 2012 в 08:59
поделиться

6 ответов

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

Лучше всего, если вы можете Не заставить их исправить свой вывод - это очистить необработанные данные, которые вы получаете. Вам необходимо заменить недопустимые символы указанным вами форматом ссылки на символы.

(Вы даже не можете прибегать к CDATA, поскольку там нет способа избежать этих символов.)

11
ответ дан 1 December 2019 в 19:08
поделиться

Мусор на входе, мусор на выходе. Если удаленное приложение отправляет вам мусор, это все, что вы получите. Если они думают, что отправляют XML, их нужно исправить. В этом случае вы не окажете им никакой пользы, работая над их ошибкой.

Вы также должны убедиться в том, что они думают, что отправляют. Что для них значила% 1С? Что они хотели?

0
ответ дан 1 December 2019 в 19:08
поделиться

Если вы действительно не можете исправить исходные данные XML, подумайте о том, чтобы применить подход, подобный тому, который я описал в этот ответ . По сути, вы создаете подкласс TextReader (например, StripTextReader), который обертывает существующий TextReader (tr) и отбрасывает недопустимые символы.

0
ответ дан 1 December 2019 в 19:08
поделиться

ИМХО, лучшим решением было бы изменить код / ​​программу / все, что создало недопустимый XML, который подается в вашу программу. К сожалению, это не всегда возможно. В этом случае вам нужно экранировать все символы <0x20, прежде чем пытаться загрузить документ.

0
ответ дан 1 December 2019 в 19:08
поделиться

Будет что-то из того, что описано в этом сообщении блога , может быть полезным?

По сути, он создает очищающий поток xml.

10
ответ дан 1 December 2019 в 19:08
поделиться

Если ваш ввод не является XML, вы должны использовать что-то вроде Tidy или Tagsoup, чтобы устранить беспорядок.

Они будут принимать любой ввод и пытаться, надеюсь, создать полезную модель DOM из это.

Я не знаю, как называются соответствующие библиотеки темной стороны.

0
ответ дан 1 December 2019 в 19:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: