我从一个简单的DataTable开始,在其中我写入了一个XML文件。下次运行程序时,我想检查XML文件是否退出,并读取它
编写xml似乎很好,我相信读取它也很好,但在读取数据集之后,我似乎无法获得数据集中的任何数据。
ds.WriteXml(@"C:Computersconfig.xml");
if (File.Exists(@"C:Computersconfig.xml"))
{
ds.ReadXml(@"C:Computersconfig.xml");
//comboBox.Items.Add(ds.Tables[0].Rows[0][0].ToString()); doesn't work
comboBox.Items.Add(ds.Tables[0].Rows.Count); //this counts 3 rows
}
我收到这个错误。
System.Data.dll 中发生类型为"System.IndexOutOfRangeException"的未处理异常
其他信息:找不到列1。
这是我的XML文件
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table1>
<Name>Test1</Name>
<Version>1.1.1.1</Version>
<Code />
<Location>C:Computerstest.txt</Location>
</Table1>
<Table1>
<Name>test2</Name>
<Version />
<Code />
<Location />
</Table1>
<Table1>
<Name>test3</Name>
<Version />
<Code />
<Location />
</Table1>
</NewDataSet>
我只是想得到;名称";每一行的字段,我做错了什么?
我将您的XML放入C:\computer并运行代码
DataSet ds =new DataSet();
if (File.Exists(@"C:Computersconfig.xml"))
{
ds.ReadXml(@"C:Computersconfig.xml");
//comboBox.Items.Add(ds.Tables[0].Rows[0][0].ToString()); doesn't work
comboBox.Items.Add(ds.Tables[0].Rows.Count); //this counts 3 rows
}
comboBox.Items.Add(ds.Tables[0]。Rows[0][0]。ToString()为Tesy1ds.Tables[0].Rows.Count为3
所以,我认为问题不在这里。
问题是在编写时
ds.WriteXml(@"C:Computersconfig.xml");
在第一行中,它会写入一个新文件,因此当你读取时,里面没有数据。所以现在你应该删除第一行,然后检查它是否运行良好
if (File.Exists(@"C:Computersconfig.xml"))
{
ds.ReadXml(@"C:Computersconfig.xml");
comboBox.Items.Add(ds.Tables[0].Rows[0][0].ToString()); //doesn't work
comboBox.Items.Add(ds.Tables[0].Rows.Count); //this counts 3 rows
}
数据表是否可能结构不正确?
public DataTable predefinedPatch = new DataTable();
predefinedPatch.Columns.Add("Name");
predefinedPatch.Columns.Add("Version");
predefinedPatch.Columns.Add("Code");
predefinedPatch.Columns.Add("Location");
//
predefinedPatch.Rows.Add("test1", "", "", "");
predefinedPatch.Rows.Add("test2", "", "", "");
predefinedPatch.Rows.Add("test3", "", "", "");