Символы, которые следует пропустить перед вызовом Xdocument.save - PullRequest
1 голос
/ 29 января 2012

У меня есть эта проблема. Я получаю данные от клиента. Использую сокетное соединение. Но это не важно. Все данные хранятся в файле XML с использованием объекта XDocument. Иногда при вызове XDocument.Save (filestream) и передаче ему данных с определенными символами или символами я получаю исключение, подобное (недопустимый шестнадцатеричный символ), это означает, что файл XML не может иметь некоторые специальные символы? Если да, где я могу найти список этих специальных символов, которые могут генерировать такие исключения?

Ответы [ 2 ]

4 голосов
/ 29 января 2012

Символы в диапазоне [0x0-0x1F] называются управляющими символами и, за исключением 0x9, 0xA, 0xD, их нельзя использовать в XML.

Вот цитата из спецификации XML :

[Определение: анализируемый объект содержит текст, последовательность символов, который может представлять разметку или символьные данные.] [Определение: A символ - это атомная единица текста, как указано в ИСО / МЭК 10646: 2000 [ИСО / МЭК 10646]. Допустимые символы: табуляция, возврат каретки, перевод строки, и юридические символы Unicode и ISO / IEC 10646. Версии эти стандарты, указанные в A.1. Нормативные ссылки действовали на время этот документ был подготовлен. Новые персонажи могут быть добавлены к этим стандарты путем поправок или новых изданий. Следовательно, процессоры XML должен принимать любой символ в диапазоне, указанном для Char. ]

Диапазон символов

Char :: = # x9 | #xA | #xD | [# x20- # xD7FF] | [# xE000- # xFFFD] | [# x10000- # x10FFFF] / * любой символ Unicode, исключая суррогатные блоки, FFFE и FFFF. * /

1 голос
/ 29 января 2012

Ответ, данный @Darin, должен направить вас в правильном направлении.Я добавлю, что если у вас есть инструмент для разработки XML, такой как XMLSpy или Stylus Studio , вы можете быстро определить оскорбительные символы.Если у вас нет такого инструмента, вы можете использовать онлайновый валидатор xml из школ WC3, найденный здесь:

http://www.w3schools.com/xml/xml_validator.asp

Это позволит проверить, правильно ли сформирован xml и содержит ли оннедопустимые символы, он не будет правильно сформирован.

Более вероятный сценарий может заключаться в том, что кодировка, указанная в документе xml, допускает символы, вызывающие проблему.Если документ указан как UTF-8, что, вероятно, и есть, то это вряд ли проблема.

...