2016-07-08 4 views
2

NumberFormatExceptionがありますが、理由がわかりません。入力文字列の場合: "dolaramerykański" java.lang.NumberFormatException.forInputStringで(NumberFormatException.java:65) におけるスレッド "メイン" java.lang.NumberFormatExceptionでParserXML NumberFormatException

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

例外pl.parser.nbp.ParseXML.parsStaxでjava.lang.Integer.valueOf(Integer.java:766) でjava.lang.Integer.parseInt(Integer.java:580) (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

@ Yogesh_Dはいわかりましたが、どうすれば修正できますか? –

+0

下記の私の答えを参照してください。 –

答えて

関連する問題