Я загружаю данные из базы данных sql и пытаюсь записать все, что содержится в наборе результатов, в XML -файл. XML -Файл должен быть действительным и правильно сформированным (у меня есть существующая XSD-схема). Мне удалось заставить все работать, кроме одного. При вызове DataSet.WriteXml("path")
с DataSet
, содержащим все необходимые атрибуты, пустые ячейки из DataTables
, содержащиеся в DataSet
, не экспортируются.
Я попытался преобразовать каждый dataColumn
в columns
типа String
, а затем заменить Dbnull
-Values на String.empty
, как показано в этом ответе .
Результат был примерно таким (без опечатки, пробелы действительно есть):
<w />
<x />
<y />
<z />
Схема:
<xs:element name="w" type="xs:unsignedByte" minOccurs="0"/>
<xs:element name="x" type="xs:unsignedByte" minOccurs="0"/>
<xs:element name="y" type="xs:unsignedByte" minOccurs="0"/>
<xs:element name="z" type="xs:unsignedByte" minOccurs="0"/>
При проверке на соответствие Данная схема дала мне следующие ошибки для w
, x
, y
и z
:
cvc-datatype-valid.1.2.1: '' is not a valid value for 'integer'.
Итак, мой вопрос в том, как разрешить эту ошибку? Я предполагаю, что это как-то связано с типом данных, поскольку я преобразовал его в строку. Или пробел внутри XML -Tag.
Я довольно много исследовал этот topi c, но не нашел удовлетворительных ответов. См. Также следующий вопрос: dataSet.write Xml не записывает пустой тег, если поле было пустым