我有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; ...
答案 0 :(得分:0)
您似乎将逗号作为小数分隔符,请查看此Best way to parseDouble with comma as decimal separator?以了解如何处理它们。