<?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());
で発見
DataTable.WriteXml
からXML
ファイルを読み取る場合は、必ず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];
もしあなたがテーブルを書いているのであれば、テーブルと同時にスキーマを書くことでこの問題を解決することができます。参照: http://msdn.Microsoft.com/en-us/library/ms135456.aspx
これを試してください、これはうまくいきます:
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];
よし、これも「私も!」答えは、しかし、上記の答えのどれも質問の要点に対処しません。
問題を適切に処理するには、最初にReadXmlSchemaメソッドを呼び出して、DataTableが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からスキーマが推測され、エラーはスローされません。