DataTable不支持Xml的架构推断.

mon*_*oys 35 c# xml datatable

<?xml version="1.0" encoding="utf-8"?>
<PHP_Adapter>
  <Adapter>
    <ID>11</ID>
    <Provider>22</Provider>
    <Connectstring>33</Connectstring>
  </Adapter>
</PHP_Adapter>
Run Code Online (Sandbox Code Playgroud)

这个我的Xml文件有什么不对?

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

        return true;
    }
Run Code Online (Sandbox Code Playgroud)

Adr*_*der 52

尝试使用一个数据集,而

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

发现于

DataTable.ReadXml(filename)引发错误.为什么?


小智 36

如果您正在阅读XML文件DataTable.WriteXml,请确保包含XmlWriteMode.WriteSchema.

例:

Table.WriteXml(DataFilePath, XmlWriteMode.WriteSchema);
Run Code Online (Sandbox Code Playgroud)

  • 如果ReadXml需要它,你会认为它应该默认编写模式!谢谢. (3认同)

小智 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];
Run Code Online (Sandbox Code Playgroud)