当前位置: 首页 > 知识库问答 >
问题:

ParserXML数字格式异常

叶福
2023-03-14

我有数字形式的感觉,但我不知道为什么?

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

异常线程"main"java.lang.NumberFormatExcture:对于输入字符串:"dolar amerykaski"在java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)在java.lang.我nteger.parseInt(Integer.java:580)在java.lang.我nteger.value(我nteger.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个答案

蒋英博
2023-03-14

看起来你有逗号作为小数分隔符,看看这个解析双逗号作为小数分隔符的最佳方法?了解如何处理它们。

 类似资料:
  • 我有一张这样的地图 我可以得到分数作为整数以及"NA",所以我映射类型为字符串,但在发布数据到索引我得到数字格式异常。 例如: 如果我将第一个数据发布为整数,后跟“NA”。我得到了这些例外。 检查日志文件时,我发现以下错误: [2016-08-29 15:19:01]elasticlog.警告:响应[{\"错误\":{\"root_cause类型\":\"mapper_parsing_except

  • 在来这里之前,我真的在互联网上搜索了答案,我认为答案将与try/get语句有关,但即使在看了几个关于这个主题的教程后,我也不确定如何实现它。 不管怎样,我正在尝试在我正在制作的新手提醒应用程序中做一件简单的事情(现在我学习Java作为我的第一语言已经有3个月了)。 我想让程序检查用户的输入,如果它是一个特定的字母(“R”),我想让程序做一些特定的事情。如果它是从0到100的整数,那么我想做其他的事

  • 我正试图通过使用以下方法来取消加密字符串,但遇到了异常。 我试图将我的加密字符串发送到下面的方法,但它不能得到Byte[],在将字符串转换为Byte[]时得到数字格式异常。 请建议。

  • 问题内容: 在我日常的Web应用程序开发中,有许多情况需要我们从用户那里获取一些输入。 然后将这个数字输入传递给可能是应用程序的服务层或DAO层。 由于它是一个数字(整数或浮点数),在某个阶段,我们需要将其转换为整数,如以下代码片段所示。 在上述情况下,在这里,我必须检查输入是否不为null或是否没有输入(空白),或者有时是否有非数字输入的可能性,例如blah,test等。 处理此类情况的最佳方法

  • 问题内容: 我有这个字符串: 并需要将其转换为: 因此,规则为: 将数字除以100,并使用逗号作为小数点分隔符 去除前导零 保留两位小数 问题答案: 在PHP手册页面上: 字符串number_format(float $ number,int $ decimals = 0,字符串$ dec_point =’。’,字符串$ thousands_sep =’,’) 如果您希望将数字格式化为,请使用: