У нас есть XML
На скрине 5 блоков, из этих блоков мне нужно вытащить логины и проценты, выделил белыми прямоугольниками. В 3 блоке процентов нет, и моя предыдущая логика ломается.
Как я делал до этого.
Загонял всю структуру в xml, вытягивал ноды, потом по ним пробегался и все получал, было вот так
И получал в целом все норм, но когда появляется 3 блок (на скрине выше), то все едет...
- берется второй ник и второй процент, тут ок
- берется третий ник, и учитывая что третьего процента нет, берется четвертый процент - уже все поехало
- четвертый ник, пятый процент и так далее...
Поэтому мне нужно брать ноду блока, например вот
И там уже искать ник и процент, но у меня не выходит, я делаю вот так
т.е. беру блок с индексом 3. В этом блоке с индексом 3, беру нулевой элемент, он собственно там единственный. выбираю там ноду по xpath, по идее должен получать единственное число, а их там не 1, а все ники... Вот не понимаю, почему в единственной 3-ей ноде все логины... где ошибаюсь?
Пробовал сделать вот так, тоже не выходит... тупо ломается, и все...
Подскажите, как мне достать из этого дурацкого (видимо потому что не знаю его хорошо...) xml информацию которую мне нужно?
спасибо
На скрине 5 блоков, из этих блоков мне нужно вытащить логины и проценты, выделил белыми прямоугольниками. В 3 блоке процентов нет, и моя предыдущая логика ломается.
Как я делал до этого.
Загонял всю структуру в xml, вытягивал ноды, потом по ним пробегался и все получал, было вот так
C#:
xmlDocument.LoadXml(instance.DroidInstance.Hierarchy.GetLayout());
var xml_nodes_nickname = xmlDocument.SelectNodes("//ViewGroup[@index>0]//TextView[@resource-id='in:id/nickname']");
var xml_nodes_yield = xmlDocument.SelectNodes("//ViewGroup[@index>0]//TextView[@resource-id='in:id/yieldView']");
for(int i=0; i<xml_nodes_nickname.count; i++){
nickname = xml_nodes_nickname.Item(i).Attributes["text"].Value.ToString().Trim();
total_koef = xml_nodes_yield.Item(i).Attributes["text"].Value.ToString().Trim();
}
- берется второй ник и второй процент, тут ок
- берется третий ник, и учитывая что третьего процента нет, берется четвертый процент - уже все поехало
- четвертый ник, пятый процент и так далее...
Поэтому мне нужно брать ноду блока, например вот
//ViewGroup[@index=3]
И там уже искать ник и процент, но у меня не выходит, я делаю вот так
C#:
var xml_nodes_index = xmlDocument.SelectNodes("//ViewGroup[@index=3]");
return xml_nodes_index.Item(0).SelectNodes("//TextView[@resource-id='in:id/nickname']").Item(0).Attributes["text"].Value;
Пробовал сделать вот так, тоже не выходит... тупо ломается, и все...
C#:
var xml_nodes_nickname = xmlDocument.SelectNodes("//ViewGroup[@index>0]//TextView[@resource-id='in:id/nickname']");
// ники всегда есть, поэтому по ним и пробегаемся
for(int i=0; i<xml_nodes_nickname.Count; i++){
nickname = total_koef = string.Empty;
try{
xml_nodes_nickname = xmlDocument.SelectNodes("//ViewGroup[@index="+i.ToString()+"]//TextView[@resource-id='in:id/nickname']");
xml_nodes_yield = xmlDocument.SelectNodes("//ViewGroup[@index="+i.ToString()+"]//TextView[@resource-id='in:id/yieldView']");
nickname = xml_nodes_nickname.Item(0).Attributes["text"].Value.ToString().Trim();
total_koef = xml_nodes_yield.Item(0).Attributes["text"].Value.ToString().Replace("%","").Trim();
project.SendInfoToLog(string.Join(" ", nickname, total_koef));
}
catch{
continue;
}
}
спасибо