@Anton238

Как исправить java.lang.NullPointerExeption?

Вот код:
try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            final Document doc = db.parse(new File("config.xml"));

            for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling()) {
                for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) {
                    for (Node m = d.getFirstChild(); m != null; m = m.getNextSibling()) {

                        //изменить по возможности этот кусок кода.
                         String stringValue;
                        if ("variable".equals(m.getNodeName())) {
                            stringValue = m.getAttributes().getNamedItem("storiesNumber").getNodeValue().trim();
                            System.out.println(stringValue);
                            stringValue = m.getAttributes().getNamedItem("elevatorCapacity").getNodeValue().trim();
                            System.out.println(stringValue);

                        }
                    }
                }
            }

        }
        catch (Exception e) {
            System.out.println (e.getClass().getName() + " with message : " + e.getMessage());
            e.printStackTrace();
        }


Вот вывод:
25
java.lang.NullPointerException with message : null
java.lang.NullPointerException


Вот xml-файл:
<?xml version="1.0" encoding="UTF-8"?>
<Lift>
    <variables>
        <variable storiesNumber = "25"/>
        <variable elevatorCapacity = "30"/>
        <variable passengerNumber = "13"/>
        <variable animationBoost = "2"/>
    </variables>


Я попытался отдебажить, нов по переменным все правильно.
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
zolt85
@zolt85
Программист
Ну смотрите, Вы берете variable, и просите у него такие атрибуты как storiesNumber и elevatorCapacity. Т.е. Ваш код ожидает что запись в XML будет вида
<variable storiesNumber = "25" elevatorCapacity = "30"/>

А в Вашем XML атрибуты storiesNumber и elevatorCapacity принадлежат разным variable. Вот и получается, что вы берете первый variable, просите у него атрибут storiesNumber и он есть, затем вы у того же самого variable просите атрибут elevatorCapacity и его нет, вот Вам и NPE.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Посмотреть по стектрейсу, где null, и понять, почему он там.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы