我正在尝试从以下xml文件中获取货币代码。但我得到了一个名为IndexOutOfRange的异常。
<string xmlns="http://www.webserviceX.NET">
<NewDataSet>
<Table>
<Name>India</Name>
<CountryCode>in</CountryCode>
<Currency>Rupee</Currency>
<CurrencyCode>INR</CurrencyCode>
</Table>
<Table>
<Name>India</Name>
<CountryCode>in</CountryCode>
<Currency>Rupee</Currency>
<CurrencyCode>INR</CurrencyCode>
</Table>
</NewDataSet>
</string>
这是我的代码,
string firstCurrency = countryService.GetCurrencyByCountry(this.DropDownList1.SelectedIndex.ToString());
DataSet dataset = new DataSet();
dataset.ReadXml(new XmlTextReader(new StringReader(firstCurrency)));
String currency = dataset.Tables[0].Rows[0][2].ToString();
String currencyCode = dataset.Tables[0].Rows[0][3].ToString();
currencyLabel.Text = currency;
currencyCodeLabel.Text = currencyCode;
错误发生在以下行
String currency = dataset.Tables[0].Rows[0][2].ToString();
我试了几个小时,但找不到解决方案。
答案 0 :(得分:0)
你可以试试这个:
String currency = dataset.Tables["Table"].Rows[0][2].ToString()
您的XML正在为您提供您不期望的内容。它创建了两个表。一个叫做“NewDataSet”,另一个叫做“Table”。您将在另一个表中找到您的行(表[1])。因此,修复数据集xml或使用我上面给出的代码。
顺便说一句,从数据表中获取值时,我绝不会建议这样的方法。至少在通过索引访问它们之前检查值是否为空。
答案 1 :(得分:0)
如@buthla所述,它没有提供所需的XML。
为了获得预期的xml,您应该将xml更新为:
<string xmlns="http://www.webserviceX.NET">
<Table>
<Name>India</Name>
<CountryCode>in</CountryCode>
<Currency>Rupee</Currency>
<CurrencyCode>INR</CurrencyCode>
</Table>
<Table>
<Name>India</Name>
<CountryCode>in</CountryCode>
<Currency>Rupee</Currency>
<CurrencyCode>INR</CurrencyCode>
</Table>
</string>
您可能还需要查看this post
要在调试器中检查数据集,请按照屏幕截图