Ответ 1
Попробуйте использовать Dataset скорее
DataSet ds = new DataSet();
ds.ReadXml(@"d:\test.xml");
MessageBox.Show(ds.Tables[0].Rows[0]["ID"].ToString());
Найдено на
<?xml version="1.0" encoding="utf-8"?>
<PHP_Adapter>
<Adapter>
<ID>11</ID>
<Provider>22</Provider>
<Connectstring>33</Connectstring>
</Adapter>
</PHP_Adapter>
Это мой файл Xml, что неправильно?
bool CheckAdapterExist(string aid)
{
DataTable dt = new DataTable();
dt.ReadXml(axml);
MessageBox.Show(dt.Rows[0]["ID"].ToString());
return true;
}
Попробуйте использовать Dataset скорее
DataSet ds = new DataSet();
ds.ReadXml(@"d:\test.xml");
MessageBox.Show(ds.Tables[0].Rows[0]["ID"].ToString());
Найдено на
Если вы читаете файл XML
из DataTable.WriteXML
, убедитесь, что вы включили XMLWriteMode.WriteSchema
.
Пример:
Table.WriteXml(DataFilePath, XmlWriteMode.WriteSchema);
Это работает
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];
Попробуйте, это сработает:
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];
Если вы тот, кто пишет таблицу, вы можете решить эту проблему, написав схему одновременно с таблицей. См.: http://msdn.microsoft.com/en-us/library/ms135456.aspx
ОК, это "Я тоже!". ответ, однако ни один из вышеперечисленных ответов не затрагивает ничтожество вопроса.
Чтобы правильно решить проблему, сначала дайте DataTable вывести схему из xml, вызвав метод ReadXmlSchema, i.e
bool CheckAdapterExist(string aid)
{
DataTable dt = new DataTable();
dt.ReadXmlSchema(axml);
dt.ReadXml(axml);
MessageBox.Show(dt.Rows[0]["ID"].ToString());
return true;
}
Таким образом, схема выводится из XML, который вы пытаетесь загрузить, и не возникает ошибка!