XML Parser. NumberFormatException на ровном месте

222
02 мая 2017, 05:26

Есть метод, который получает элементы xml.parsers:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
private Currency getXMLCurrency(Node item, String date) {
    Currency currency = new Currency();
    if (item.getNodeType() == item.ELEMENT_NODE) {
        Element element = (Element) item;
        currency.setdCode(getTagValue("NumCode", element));
        currency.setCode(getTagValue("CharCode", element));
        currency.setForAmount(Integer.parseInt(getTagValue("Nominal", element)));
        currency.setRate(Double.parseDouble(getTagValue("Value", element).replace(",", ".")));
        currency.setDate(date);
    }
    return currency;
}

Элементы извлекаются в другом методе, который возвращает String:

private static String getTagValue(String tag, Element element) {
        NodeList nodeList = element.getElementsByTagName(tag).item(0).getChildNodes();
        Node node = (Node) nodeList.item(0);
        String s = node.getNodeValue();
        Log.d("VALUE", s);
        return s;
    }

Вот элемент обрабатываемой XML-страницы:

<Valute ID="R01010">
<NumCode>036</NumCode>
<CharCode>AUD</CharCode>
<Nominal>1</Nominal>
<Name>Австралийский доллар</Name>
<Value>16,0102</Value>
</Valute>

При попытке выполнить строчку:

        currency.setForAmount(Integer.parseInt(getTagValue("Nominal", element)));

выскакивает NumberFormatException. Выглядит это так:

Caused by: java.lang.NumberFormatException: Invalid int: "
                                                                                                1
                                                                                               "
                                                                                                 at java.lang.Integer.invalidInt(Integer.java:138)
                                                                                                 at java.lang.Integer.parse(Integer.java:410)
                                                                                                 at java.lang.Integer.parseInt(Integer.java:367)
                                                                                                 at java.lang.Integer.parseInt(Integer.java:334)
                                                                                                 at com.xpendence.development.currencyconverter.operations.Strategy.getXMLCurrency(Strategy.java:122)

При том, что Log.d показывает:

04-29 05:52:16.824 13060-13115/com.xpendence.development.currencyconvarter D/VALUE:    1

— вполне себе обычную единицу.

Я уж не знаю, что делать. Прошу помощи.

Answer 1

попробуйте

currency.setForAmount(Integer.parseInt(getTagValue("Nominal"‌​, element).trim()));

возможно в значения попадают пробелы

READ ALSO
Ограничить длину дробной части в строке с помощью Stream API

Ограничить длину дробной части в строке с помощью Stream API

Мне необходимо ограничить количество символов в строке после '' до 6

210
Как добавить в меню Drawer Layout текст?

Как добавить в меню Drawer Layout текст?

ЗдравствуйтеКак добавить в меню Drawer Layout текст? Подробности на рисунке

202
RecyclerView внутри NestedScrollView

RecyclerView внутри NestedScrollView

Сделал горизонтальный RecyclerView внутри NestedScrollViewВ итоге при запуске активности если RecyclerView не торчит на определенную высоту, то он сам делает...

346
Отправка ajax post запроса к сервлету

Отправка ajax post запроса к сервлету

Не могу никак отправить простейший запрос к сервлету средствами jQueryНо при это если отправляю через форму, то все работает на ура

305