Я читал в некоторых данных из файлов XML с помощью DataSet.ReadXML()
DataSet.ReadXml - Как поймать «входная строка не в правильном формате»
Моего вызова выглядит следующим образом (где XmlFileName
является string
ж/путь к XML-файл):
this.dataSet.ReadXml(XmlFileName, XmlReadMode.InferTypedSchema);
Этот код ранее использовался XmlReadMode.Auto
, однако мы сталкивались проблемы с образом лечил типы данных. Мы успешно используем InferTypedSchema в течение нескольких недель. Недавно мы столкнулись с несколькими проблемами.
я сводился этим вопрос: мы имеем поле в нашем файле XML под названием «Product_UPC»
Это поле всегда (надеюсь) содержит числа. Мы только что получили значение в этом поле с завершающим пробелом в конце, так что это было что-то вроде «123456»
ReadXml()
с InferTypedSchema
параметра не нравится это, и бросил исключение внутренне, что "The input string was not in a correct format"
.
Я полагаю, что, так как предыдущие значения «Product_UPC» были интерпретированы как числовая ранее в файле XML, .NET теперь преобразование всех будущих значений того же поля в номера тоже.
Поскольку ошибка "The input string was not in a correct format"
может быть выбрана по ряду причин, я не могу предположить, что проблема связана с самим UPC, и я не знаю, какое точное значение в файле XML имеет проблему, чтобы сообщить об этом пользователю , Эти файлы в конечном итоге составляют 10 000 строк, поэтому попросить пользователя не выполнять сканирование для конечных пробелов.
Любая помощь или идеи были бы замечательными.
Опубликуйте схему (.xsd) и подтвердите ее перед созданием DataSet. Это позволит вам убедиться, что данные в XML-файле находятся в правильном формате, прежде чем пытаться загрузить его в DataSet. Это также может дать вам список проблем, которые нужно сообщить пользователю. – Kevin
Похоже, у вас может быть место после 123456. Вы сохранили xml со встроенной схемой? Вы проверили схему, чтобы увидеть, является ли тип строкой или целым? Вы можете добавить схему в xml следующим образом: ds.WriteXml (имя_файла, XmlWriteMode.WriteSchema); – jdweng