我已经开始使用一个简单的DataTable,我已经写入了一个XML文件。在下次程序运行时,我想检查XML文件是否退出并读取它。
看起来写xml很好,我相信读它很好,但是在我读完之后我似乎无法获得DataSet中的任何数据..
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table1>
<Name>Test1</Name>
<Version>1.1.1.1</Version>
<Code />
<Location>C:\Computers\test.txt</Location>
</Table1>
<Table1>
<Name>test2</Name>
<Version />
<Code />
<Location />
</Table1>
<Table1>
<Name>test3</Name>
<Version />
<Code />
<Location />
</Table1>
</NewDataSet>
我收到此错误。
未处理的类型&#39; System.IndexOutOfRangeException&#39;发生在System.Data.dll
中其他信息:找不到第1列。
在这里查看我的XML文件
{{1}}
我只是试图获得&#34;姓名&#34;从每一行开始,我做错了什么?
答案 0 :(得分:0)
我将您的XML放入C:\ computer 并运行代码
DataSet ds =new DataSet();
if (File.Exists(@"C:\Computers\config.xml"))
{
ds.ReadXml(@"C:\Computers\config.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()是Tesy1 ds.Tables [0] .Rows.Count是3
所以,我认为问题不在这里。
答案 1 :(得分:0)
问题出在你写
的时候ds.WriteXml(@"C:\Computers\config.xml");
在第一行中它会写一个新文件,因此当你读到它时,里面没有数据。所以现在你应该删除第一行,然后检查它应该运行正常
if (File.Exists(@"C:\Computers\config.xml"))
{
ds.ReadXml(@"C:\Computers\config.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
}
答案 2 :(得分:0)
DataTable是否可能无法正确构建?
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", "", "", "");