Я написал файл схемы XML вручную (без использования DataSet Designer в VS) и соответствующий файл XML, содержащий структурированные данные для чтения.
Я запустил программу xsd.exe для создания класса Typed DataSet; в целом это выглядит нормально (игнорируя то, как он использует строчные буквы для публичных членов класса), но когда дело доходит до использования сгенерированного класса, ничего не происходит:
MyDataSet set = new MyDataSet();
set.ReadXml( "myData.xml" );
На этом этапе все типизированные члены таблицы класса MyDataSet имеют значение .Count, равное 0.
Как ни странно, нормальный DataSets у меня тоже не работает:
DataSet set = new DataSet();
set.ReadXmlSchema("mySchema.xsd");
set.ReadXml( "myData.xml");
set.Tables.Count возвращает 7, что верно, но все таблицы пусты.
Я упускаю что-то очевидное?
ОБНОВИТЬ:
Совершенно ничего не делая, set.Tables["extra"].Rows.Count возвращает правильное количество строк; но когда я использую типизированный набор данных, он не работает, несмотря на то, что все остальное остается прежним:
DataSet ds = new DataSet();
ds.ReadXml( packageExamplePath );
System.Console.WriteLine( ds.Tables["extra"].Rows.Count );
Package st = new Package();
st.ReadXml( packageExamplePath );
System.Console.WriteLine( st.Tables["extra"].Rows.Count );
... выводит это на консоль:
19
0





Вопрос: правильно ли генерируется код из xsd.exe? Например, можете ли вы использовать сгенерированный DS в коде, создавать DataRows, добавлять их в DataTables и т. д.?
Если да, попробуйте заполнить DS вручную, сохранить xml и сравнить с вашим структурированным файлом данных xml, чтобы убедиться, что он имеет ту же структуру.