java.lang.NumberFormatException
相关截图:
1 | //问题描述:XmlDataSource.java第57行如下所示,XmlDataSource.java完整代码附加在其后<br>//painting.setCategory(Integer.parseInt(element.elementText("category")));<br><br>package com.imooc.mgallery.utils;<br><br>import java.io.FileOutputStream;<br>import java.io.IOException;<br>import java.io.OutputStreamWriter;<br>import java.io.UnsupportedEncodingException;<br>import java.io.Writer;<br>import java.net.URLDecoder;<br>import java.util.ArrayList;<br>import java.util.List;<br><br>import org.dom4j.Document;<br>import org.dom4j.DocumentException;<br>import org.dom4j.Element;<br>import org.dom4j.Node;<br>import org.dom4j.io.SAXReader;<br><br>import com.imooc.mgallery.entity.Painting;<br><br>/**<br> * <br> * 数据源类,用于将XML文件解析为Java对象<br> *<br> */<br>public class XmlDataSource {<br> // 通过static关键字来保证数据全局唯一<br> private static List<Painting> data = new ArrayList();<br> private static String dataFile;<br> static {<br> // 得到painting.xml文件完整物理路径 <br> // c:\new style\painting.xml<br> // c:\new%20style\painting.xml<br> dataFile = XmlDataSource.class.getResource("/painting.xml").getPath();<br> reload();<br><br> }<br><br> private static void reload() {<br> URLDecoder decoder = new URLDecoder();<br> try {<br> decoder.decode(dataFile, "UTF-8");<br> System.out.println(dataFile);<br> // 利用Dom4j对XML进行解析<br> SAXReader reader = new SAXReader();<br> // 1. 获取Document文档对象<br> Document document = reader.read(dataFile);<br> // 2.Xpath得到XML节点集合<br> List<Node> nodes = document.selectNodes("/root/painting");<br> data.clear();<br> for (Node node : nodes) {<br> Element element = (Element) node;<br> String id = element.attributeValue("id");<br> String pname = element.elementText("pname");<br> Painting painting = new Painting();<br> painting.setId(Integer.parseInt(id));<br> painting.setPname(pname);<br> painting.setCategory(Integer.parseInt(element.elementText("category")));<br> painting.setPrice(Integer.parseInt(element.elementText("price")));<br> painting.setPreview(element.elementText("preview"));<br> painting.setDescription(element.elementText("description"));<br> data.add(painting);<br>// System.out.println(id+":" + pname);<br> }<br><br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br><br> /**<br> * 获取所有Painting对象<br> * @return Painting List<br> */<br> public static List<Painting> getRawPainting() {<br> return data;<br> }<br> public static void append(Painting painting) {<br> //1.读取XML文档,得到document对象<br> SAXReader reader = new SAXReader();<br> Writer writer = null;<br> try {<br> Document document = reader.read(dataFile);<br> //2.创建新的painting节点<br> Element root = document.getRootElement();//<root><br> Element p = root.addElement("painting");<br> //3.创建painting节点的各个子节点<br> p.addAttribute("id", String.valueOf(data.size()+1));<br> p.addElement("pname").setText(painting.getPname());<br> p.addElement("category").setText(painting.getCategory().toString());<br> p.addElement("price").setText(painting.getPrice().toString());<br> p.addElement("preview").setText(painting.getPreview());<br> p.addElement("description").setText(painting.getDescription());<br> //4.写入XML,完成追加操作<br> writer = new OutputStreamWriter(new FileOutputStream(dataFile),"UTF-8");<br> document.write(writer);<br> System.out.println(dataFile);<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }finally {<br> if(writer != null) {<br> try {<br> writer.close();<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> reload();//内存与文件数据一致<br> }<br><br> }<br><br> public static void main(String[] argn) {<br>// new XmlDataSource();<br>// List<Painting> ps = XmlDataSource.getRawPainting();<br>// System.out.println(ps);<br><br> Painting p = new Painting();<br> p.setPname("测试油画");<br> p.setCategory(1);<br> p.setPrice(12000);<br> p.setPreview("/upload/10.jpg");<br> p.setDescription("测试油画描述");<br> XmlDataSource.append(p);<br> }<br>}<br> |
15
收起
正在回答 回答被采纳积分+1
1回答
好帮手慕小尤
2021-02-02 10:18:08
同学你好,1、NumberFormatException异常是数字格式转换异常,当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出这个异常。
2、建议同学查看第57行左右的代码,应该是数据转换时,出现的问题。如:同学可查看element.attributeValue("category")是否可以获取到数据。或同学可以添加一个if判断,判断是否为空,如果为空,则跳出此次循环。
3、在添加时,应该是无法添加空值的,同学也可以在添加时进行判断。
注:建议同学查看xml文件中的数据,是否有的category值为空。
祝学习愉快!
java工程师2020版
- 参与学习 人
- 提交作业 9404 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧