значение взятое из xml не могу сравнить в if, как сконвертировать?

  • Автор темы Автор темы Sanekk
  • Дата начала Дата начала

Sanekk

Client
Регистрация
24.06.2016
Сообщения
1 002
Реакции
389
Баллы
83
Собственно как сконвертить понятно, но если это дело работает в цикле, то когда хочу сравнить две переменных (цифры), то выдает ошибку "Входная строка имела неверный формат."
этот код выдает ошибку:
Развернуть Свернуть Копировать
string id_product = "61771";
int id = int.Parse(id_product);

int xml_count = project.Xml.yml_catalog.shop.offers.offer.Count;// количество офферов в xml

for(int q = 0; q <= xml_count; q++){
  
    project.SendWarningToLog(q.ToString(),false);
  
    string id_by_xml = project.Xml.yml_catalog.shop.offers.offer[q]["id"];
  
    int xml_id = int.Parse(id_by_xml);
  
    if(id == xml_id){// на счете 26 падает по ошибке (Входная строка имела неверный формат.) , как раз тогда когда должно выполнится условие
      
        return "norm";
      
      
    }
}

В проекте 3 кубика там все подписанны.
1) не работает в цикле если сравниваем в int (тут ошибка, не могу понять в чем заключается)
2) нормально работает без цикла в int (тут сравниваю предварительно сконвертировал в int , норм работает)
3) работает в цикле если сравниваем в string (тут в цикле, но сравниваю цифры в стринг, тоже работает, но так сравнивать ведь не надо)

Почему первый вариант не фурычит понять не могу, всю голову сломал.
 

Вложения

  • test.xmlz
    test.xmlz
    625,3 KB · Просмотры: 1
Почему первый вариант не фурычит понять не могу, всю голову сломал.

Все просто, у тебя id, не является числом.
XML:
Развернуть Свернуть Копировать
id="61771s67444"

Можешь сделать простую проверку на наличие "s"
C#:
Развернуть Свернуть Копировать
if (id_by_xml.Contains("s")) {

string [] sp = id_by_xml.Split("s");

id_by_xml = sp[0];

}

int xml_id = int.Parse(id_by_xml);

Код кривой, писал как пример логики.
 
Последнее редактирование:
  • Оценить
Реакции: Sanekk
Все просто, у тебя id, не является числом.
XML:
Развернуть Свернуть Копировать
id="61771s67444"

Можешь сделать простую проверку на наличие "s"
C#:
Развернуть Свернуть Копировать
if (id_by_xml.Contains("s")) {

string [] sp = id_by_xml.Split("s");

id_by_xml = sp[0];

}

int xml_id = int.Parse(id_by_xml);

Код кривой, писал как пример логики.
все верно дружище, спасибо. Это я вчера уже тупить начал :dy:
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)