<?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;
}
答案 0 :(得分:51)
尝试使用数据集而不是
DataSet ds = new DataSet();
ds.ReadXml(@"d:\test.xml");
MessageBox.Show(ds.Tables[0].Rows[0]["ID"].ToString());
发现于
答案 1 :(得分:36)
如果您正在阅读XML
中的DataTable.WriteXml
文件,请确保添加XmlWriteMode.WriteSchema
。
示例:
Table.WriteXml(DataFilePath, XmlWriteMode.WriteSchema);
答案 2 :(得分: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 :(得分:4)
试试这个,这将有效:
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];
答案 4 :(得分:4)
如果您是编写表的人,可以通过在表的同时编写模式来解决此问题。请参阅:http://msdn.microsoft.com/en-us/library/ms135456.aspx
答案 5 :(得分:-1)
好的,这是“我也是!”回答,但上述答案都没有解决问题的细节。
要正确处理问题,首先让DataTable通过调用 ReadXmlSchema 方法从xml推断出架构,即
bool CheckAdapterExist(string aid)
{
DataTable dt = new DataTable();
dt.ReadXmlSchema(axml);
dt.ReadXml(axml);
MessageBox.Show(dt.Rows[0]["ID"].ToString());
return true;
}
这样,架构就会从您尝试加载的XML中产生,并且不会抛出任何错误!