В варианте Switch Case написанном выше в дебаге xr.Name показывает , что пустой - "None" .
Если убрать строку xr.Skip(); в default : , то начинают приходить данные в xr.Name , но вылетает ошибка : на секторе "SecCode" - исключение не обработано , метод ReadElementContentAsString не поддерживается для узлов типа EndElement. строка 1 , позиция 65 .
навскидку у вас метод Read в while зачитал завершающий тэг элемента, а секция (section == "ticks") берется из предыдущей итерации, поэтому и получается вызов ReadElementContentAsString на EndElement. Строки у вас обнуляются хаотично, при обработке завершающего тэга у вас закомментарена очистка строк:
if (xr.NodeType == XmlNodeType.EndElement)
{
//line = "";
//section = "";
}
Надо задампить блок xml, на котором получаете исключение и прогнать его по шагам в дебаге, если явно ошибки в коде не видно.