2009-12-20 1 views

ответ

45

Try используя Dataset довольно

DataSet ds = new DataSet(); 
ds.ReadXml(@"d:\test.xml"); 
MessageBox.Show(ds.Tables[0].Rows[0]["ID"].ToString()); 

Найдено в

DataTable.ReadXml(filename) throws an error. Why?

+0

Я думаю, что этот вопрос был связан с таблицей, а не набора данных. Кроме того, правильным способом является добавление схемы в пользовательскую таблицу. – fcm

4

Try это, это будет работать:

System.Xml.XmlTextReader reader = 
       new System.Xml.XmlTextReader(@"C:\Users\Mayank\Documents\Projects\XMLTEST\XMLTEST\XMLFile1.xml"); 
      DataSet newTable = new DataSet(); 
      newTable.ReadXml(reader); 
      DataTable _dt=newTable.Tables[0]; 
7

Это работает

 string XML = @" 
      <MyTable> 
      <MyRecord> 
       <Col_1>test</Col_1> 
       <Col_2>1234</Col_2> 
      </MyRecord> 
      <MyRecord> 
       <Col_1>Record 2</Col_1> 
       <Col_2>2</Col_2> 
      </MyRecord> 
      </MyTable> 
     "; 
     DataSet DS = new DataSet(); 
     DS.ReadXml(new StringReader(XML)); 

     DataTable DT=DS.Tables[0]; 
3

Если вы один записи таблицы, вы можете решить эту проблему, написав схемы в то же время, что и таблица. См.: http://msdn.microsoft.com/en-us/library/ms135456.aspx

+0

Возможно, вы захотите включить пример, если эта связь будет когда-либо изменяться. – cjbarth

0

ОК, это «Я тоже!». ответ, однако ни один из вышеперечисленных ответов не затрагивает ничтожество вопроса.

Чтобы правильно обработать проблему, сначала пусть DataTable вывести схему из XML с помощью вызова ReadXmlSchema метод, т.е.

bool CheckAdapterExist(string aid) 
{ 
    DataTable dt = new DataTable(); 
    dt.ReadXmlSchema(axml); 
    dt.ReadXml(axml); 
    MessageBox.Show(dt.Rows[0]["ID"].ToString()); 

    return true; 
} 

Таким образом, схема будет infered из XML, что вам пытаются загрузить, и ошибка не возникает!

+2

Это по-прежнему вызывает одно и то же исключение «DataTable не поддерживает вывод схемы из Xml». – bouvierr

29

Если вы читаете файл XML от DataTable.WriteXML, обязательно включите XMLWriteMode.WriteSchema.

Пример:

Table.WriteXml(DataFilePath, XmlWriteMode.WriteSchema); 
+1

Вы могли бы подумать, что он должен написать схему по умолчанию, если это требует ReadXml !!! Благодарю. – CathalMF

+0

Спасибо, Марк! Это должно быть отмечено как фактический ответ. DataTable не знает схему, если она не включена в исходный экспорт. Другой способ обойти эту проблему - создать схему вручную при создании объекта DataTable, а затем прочитать данные из XML. –

 Смежные вопросы

  • Нет связанных вопросов^_^