ParserXML NumberFormatException

时间:2016-07-08 09:16:53

标签: java parsing

我有NumberFormatException,但我不知道为什么?

XML文档 http://www.nbp.pl/kursy/xml/c073z070413.xml

线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:“dolaramerykański”     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)     在java.lang.Integer.parseInt(Integer.java:580)     在java.lang.Integer.valueOf(Integer.java:766)     在pl.parser.nbp.ParseXML.parsStax(ParseXML.java:83)

public class ParseXML {


private static Logger logger = Logger.getLogger(ParseXML.class);


public static void main(String[] args) {
    ParseXML xml = new ParseXML();
    try {
        List<Currency> currencies = xml.parsStax("xml/nbp.xml");
        System.out.println(currencies);
    } catch (XMLStreamException e) {
        e.printStackTrace();
    }


}

public List<Currency> parsStax(final String fileName) throws XMLStreamException {

    if (fileName == null || fileName.trim().equals("")) {
        return Collections.emptyList();
    }

    List<Currency> currencyList = new ArrayList();
    Currency currency = null;
    String text = null;
    boolean inItem = false;


    XMLInputFactory factory = XMLInputFactory.newFactory();
    XMLStreamReader parser = factory
            .createXMLStreamReader(ClassLoader.getSystemResourceAsStream(fileName));


    while (parser.hasNext()) {
        int event = parser.next();

        switch (event) {
            case XMLStreamConstants.START_ELEMENT:
                String tagName = parser.getLocalName();
                if (tagName.equals("pozycja")) {
                    currency = new Currency();
                    inItem = true;
                }

                break;

            case XMLStreamConstants.CHARACTERS:
                if (inItem) {
                    text = parser.getText().trim();


                }
                break;

            case XMLStreamConstants.END_ELEMENT:
                switch (parser.getLocalName()) {
                    case "pozycja":
                        currencyList.add(currency);
                        break;
                    case "nazwa_waluty":
                        currency.setName_currency(text);
                        logger.debug( text);
                    case "przelicznik":
                        currency.setConverter(Integer.valueOf(text));
                        logger.debug("Przelicznki" + text);
                        break;
                    case "kod_waluty":
                        currency.setCode_converter(text);
                        logger.debug(text);
                        break;
                    case "kurs_kupna":
                        currency.setBuying_rate(Double.valueOf(text));
                        break;
                    case "kurs_sprzedazy":
                        currency.setSelling_rate(Double.valueOf(text));
                        break;
                }
                break;

            case XMLStreamConstants.START_DOCUMENT:
                currencyList = new ArrayList();
                break;
        }
    }

    return currencyList;
}

}

货币类

private String name_currency;
private int  converter;
private String code_converter;
private double selling_rate;
private double buying_rate; ...

1 个答案:

答案 0 :(得分:0)

您似乎将逗号作为小数分隔符,请查看此Best way to parseDouble with comma as decimal separator?以了解如何处理它们。