断点值为空

断点值为空

老师,为什么我在ps设置断点的时候,除了id和name其他都为空,但是我用getPrice方法还是能读取到值的

http://img1.sycdn.imooc.com//climg/60ae6a5009eb49b410600542.jpg

http://img1.sycdn.imooc.com//climg/60ae6a5109383dd109740452.jpg

相关代码:

package com.imooc.mgallery.utils;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

import com.imooc.mgallery.entity.Painting;

/**
* 数据源类,用于将xml文件解析为java对象
*/

public class XmlDataSource {
//通过static静态关键字保证数据全局唯一。也可以用单例模式来保证对象全局唯一
private static List<Painting> data=new ArrayList();
private static String dataFile;
//初始化
static {

//getpat会对路径进行base64转换,eg空格被转换为%20,如果javaio读取时,%20不会被解析,就会报错找不到路径
URLDecoder decoder=new URLDecoder();
try {
//得到classes的根路径,找到对应的painting.xml,用getpath得到painting.xml完整的物理磁盘地址
dataFile=XmlDataSource.class.getResource("/painting.xml").getPath();
System.out.println(dataFile);
decoder.decode(dataFile,"UTF-8");
//利用Dom4j对XML进行解析,SAXReader为dom4j核心对象,解析对象
SAXReader reader =new SAXReader();
//1、获取document文档对象
Document document=reader.read(dataFile);
//2、xpath得到xml节点集合,在xml中painting节点隶属于root
List<Node> nodes=document.selectNodes("/root/painting");

//node 是所有xml节点的统称,element则通常指的xml中的标签,及标签中所指代的信息
for(Node node:nodes) {
Element element=(Element)node;
String id=element.attributeValue("id");
String pname=element.elementText("pname");
String categroy=element.elementText("category");
String price=element.elementText("price");
String preview=element.elementText("preview");
String description=element.elementText("description");
System.out.println(id+":"+pname+price+preview);
Painting painting=new Painting();
painting.setId(Integer.parseInt(id));
painting.setPname(pname);
painting.setCategroy(Integer.parseInt(categroy));
painting.setPrice(Integer.parseInt(price));
painting.setPreview(preview);
painting.setDescription(description);
data.add(painting);

System.out.println(painting.getPrice());

}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}
public static List<Painting> getRawData(){
return data;
}
public static void main(String[] args) {
List<Painting> ps =XmlDataSource.getRawData();
System.out.println(ps);
}
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿满 2021-05-27 12:01:30

同学你好,这边测试都是有值的,如:

http://img1.sycdn.imooc.com//climg/60af18d909bf456c05590318.jpg

同学的测试结果中,可能id为31的Painting对象中,只id和name有值,其他的查询结果中都有值,所以getParice()可以获取值。

祝学习愉快~

  • 提问者 慕哥4584835 #1
    所以是我的软件有毒吗哈哈
    2021-05-27 14:00:31
  • 好帮手慕阿满 回复 提问者 慕哥4584835 #2

    同学你好,这个可能是和存储的数据有关,建议同学可以是去painting.xml文件中,查看一下id为31的数据,category,description等是否有值。

    祝学习愉快~

    2021-05-27 15:31:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师