Проблема в том, что вы проигнорировали тот факт, что во входном XML есть текстовые узлы только для пробелов, которые занимают позиции индекса при использовании getChildNodes().item(i)
.Вы должны проверить каждый тип узла и игнорировать неэлементные узлы, чтобы обрабатывать только те, которые вам нужны.
Исходя из вашего ввода, я могу сказать, что между строками каждого тега строки есть пробел, поэтому
column = row.getChildNodes().item(k);
, где i == 1, возвращает текстовый узел.Поскольку у текстового узла нет дочерних узлов, column
на этом этапе является нулевым, что приводит к NPE.
Это также означает, что вы не можете слепо использовать счетчики из тега <tileset>
в качестве границ цикла.Вы должны проверить каждый тип узла перед его обработкой и считать фактически обработанные узлы до тех пор, пока не достигнете ожидаемых итогов (что, кстати, неверно; имеется 50 строк и 50 столбцов).