Java.lang.NumberFormatException error: empty string- Exchange Rate application

∥☆過路亽.° 提交于 2021-02-17 06:55:12

问题


I'm writing a program which gets daily exchange rates from http://www.tcmb.gov.tr/kurlar/today.xml and saves them to the List. Here is my code:

public class ParseTheXml {

    private List<CurrencyPojo> currencyList;


    public void setCurrencyList(List<CurrencyPojo> currencyList) {
        this.currencyList = currencyList;
    }

    public List<CurrencyPojo> getCurrencyList() throws ParserConfigurationException {
        currencyList = new ArrayList<CurrencyPojo>();

        try {
            DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
            URL url = new URL("http://www.tcmb.gov.tr/kurlar/today.xml");
            Document document = builder.parse(url.openStream());

            NodeList nodeList = document.getElementsByTagName("Currency");

            for (int i = 0; i < nodeList.getLength(); i++) { // döngü her currency türü için
                Element element = (Element) nodeList.item(i);
                CurrencyPojo currencyPojoObject = new CurrencyPojo(); 

                currencyPojoObject.setCrossOrder(Integer.parseInt(element.getAttribute("CrossOrder")));
                currencyPojoObject.setKod(element.getAttribute("Kod"));
                currencyPojoObject.setCurrenyCode(element.getAttribute("CurrencyCode"));

                currencyPojoObject.setUnit(Integer.parseInt(element.getElementsByTagName("Unit").item(0).getTextContent()));
                currencyPojoObject.setIsim(element.getElementsByTagName("Isim").item(0).getTextContent());
                currencyPojoObject.setCurrencyName(element.getElementsByTagName("CurrencyName").item(0).getTextContent());
                currencyPojoObject.setForexBuying(Double.parseDouble(element.getElementsByTagName("ForexBuying").item(0).getTextContent()));


       currencyPojoObject.setForexSelling(Double.parseDouble(element.getElementsByTagName("ForexSelling").item(0).getTextContent()));  //  Last 3 codes have Emppty String errors
                currencyPojoObject.setBanknoteBuying(Double.parseDouble(element.getElementsByTagName("BanknoteBuying").item(0).getTextContent()));
                currencyPojoObject.setBanknoteSelling(Double.parseDouble(element.getElementsByTagName("BanknoteSelling").item(0).getTextContent()));

                currencyList.add(currencyPojoObject);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return currencyList;
    } 

On the part that getting ForexSelling, BanknoteBuying and Banknote Selling values,I get

java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at javaxmlparseandshow.ParseTheXml.getCurrencyList(ParseTheXml.java:55)
    at javaxmlparseandshow.ParseTheXml.main(ParseTheXml.java:75)

Can someone help me to fix these? Thanks in advance.


回答1:


Alternatively you can set 0 to empty xml strings

private double parseDouble(String val){
    if(val== null || val.isEmpty()) 
        return 0.0;
    else
        return Double.parseDouble(val);
}

EX :

currencyPojoObject.setForexSelling(parseDouble(element.getElementsByTagName("ForexSelling").item(0).getTextContent())); 



回答2:


AS I understand from error stacktrace, element.getElementsByTagName("ForexSelling") field has no data. The parser tries to convert empty data to string and throws error. Look at the xml you must see the empty field. As a solution I think you need to first check the data is empty or not:




回答3:


Did you try something on the lines of

String forexStr = element.getElementsByTagName("ForexSelling").item(0).getTextContent();
if( /* forexStr conforms to your criteria like, for example: !forexStr.equals("")*/){
    currencyPojoObject.setForexSelling(Double.parseDouble(forexStr); 
}

?



来源:https://stackoverflow.com/questions/51043805/java-lang-numberformatexception-error-empty-string-exchange-rate-application

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!