Я работаю над небольшим проектом, который получает XML-данные в строковой форме из давно запущенного приложения. Я пытаюсь загрузить эти строковые данные в XDocument
(System.Xml.Linq.XDocument
), а затем оттуда сделать некоторые XML Magic и создать файл xlsx для отчета по данным.XML Exception: Invalid Character (s)
Иногда я получаю данные с недопустимыми символами XML, а при попытке проанализировать строку в XDocument
, я получаю эту ошибку.
[System.Xml.XmlException] сообщение: '?', Шестнадцатеричное значение 0x1C, это неверный символ.
Поскольку у меня нет контроля над удаленным приложением, вы можете ожидать ЛЮБОГО характера.
Я хорошо знаю, что XML имеет способ разместить в нем символы, такие как 
или что-то в этом роде.
Если вообще возможно, я СЕРЬЕЗНО хотел бы сохранить ВСЕ данные. Если нет, то пусть это будет.
Я думал о редактировании строки ответа программно, а затем вернуться и пытается повторно парсер должен исключение быть выброшены, но я попробовал несколько методов, и ни один из них, кажется, успешно.
Благодарим за внимание.
Кодекс что-то вдоль линии это:
TextReader tr;
XDocument doc;
string response; //XML string received from server.
...
tr = new StringReader (response);
try
{
doc = XDocument.Load(tr);
}
catch (XmlException e)
{
//handle here?
}
На самом деле, он обрабатывает XML все сразу, как строку. –
@Matthew, да, вот пример, который он называет .ReadToEnd(), но вы могли бы просто использовать .Read() и т. Д. Мое предположение - это то, что OP будет делать то, что вы сказали. –
Эта ссылка была чрезвычайно полезна – Meiscooldude