У меня есть код ниже, который проходит через XML-документ, чтобы захватить определенную информацию. Я хочу захватить 3 бита информации и поместить их в переменные. Поскольку код показывает, что я объявил переменные перед циклом, то после цикла я пытаюсь использовать переменные, которые упоминают, что они не назначены.Ошибка при попытке доступа к переменной внутри цикла for
Я также считаю, что 3 петли, вероятно, не лучший способ сделать это, но не смогли найти другой способ получить все три бита информации.
Heres код;
private void findDetails(String school)
{
XElement root = XElement.Load("proxies.xml");
IEnumerable<XElement> proxydetails = from el in root.Elements("item") where (string)el.Element("schoolname") == school select el;
String SchoolAddress1, Port, Enabled = "";
foreach (XElement el in proxydetails)
{
SchoolAddress1 = (string)el.Element("schooladdress");
}
foreach (XElement el in proxydetails)
{
Port = (string)el.Element("schoolport");
}
foreach (XElement el in proxydetails)
{
Enabled = (string)el.Element("schoolenabled");
}
MessageBox.Show(SchoolAddress1);
}
Я только что проверил, какие данные возвращаются в proxydetails, и это следующее;
<item>
<schoolname>Primary School</schoolname>
<schooladdress>proxy</schooladdress>
<schoolport>80</schoolport>
<schoolenabled>1</schoolenabled>
</item>
Вот обновленный код, который сейчас работает;
private void findDetails(String school)
{
XElement root = XElement.Load("proxies.xml");
IEnumerable<XElement> ProxyDetails = from el in root.Elements("item") where (string)el.Element("schoolname") == school select el;
String schoolAddress1 = "";
String port = "";
String enabled = "";
foreach (XElement el in ProxyDetails)
{
schoolAddress1 = (string)el.Element("schooladdress");
port = (string)el.Element("schoolport");
enabled = (string)el.Element("schoolenabled");
}
MessageBox.Show(schoolAddress1);
}
Вы уверены, что proxydetails, имеющие данные ? + На самом деле вам не нужны 3 петли! – Neel
Похоже, что у вас ничего нет в proxydetails, и петли вообще не происходят. Запустите его в режиме отладки и сообщите нам, что это счет элемента в перечислителе перед входом в первый цикл. – Gnqz
Я только что добавил то, что содержалось в proxydetails. – Nathan