00">
对应的java类:
(是用反射机制自动生成的,等有时间我把生成java类的的代码和注入的代码都贴出来,本来用java动态编译+反射机制可以实现将xml文件直接生成一个java对象的,但是我考虑到在写代码的时候没有智能提示很容易出错,所以选择自动生成类,再创建对象,再注入值)
classPredict_data{
publicStringcity_code=null;
publicStringcity_name=null;
publicStringdate_time=null;
publicStringnodeText=null;
publicDetail[]detail=null;
publicclassDetail
{
publicStringdate=null;
publicStringpt=null;
publicStringnodeText=null;
publicDayday=null;
publicclassDay
{
publicStringnodeText=null;
publicWeatherweather=null;
publicclassWeather
{
publicStringimg=null;
publicStringinfo=null;
publicStringtemperature=null;
publicStringnodeText=null;
}
publicWindwind=null;
publicclassWind
{
publicStringdirect=null;
publicStringpower=null;
publicStringnodeText=null;
}
}
publicNightnight=null;
publicclassNight
{
publicStringnodeText=null;
publicWeatherweather=null;
publicclassWeather
{
publicStringimg=null;
publicStringinfo=null;
publicStringtemperature=null;
publicStringnodeText=null;
}
publicWindwind=null;
publicclassWind
{
publicStringdirect=null;
publicStringpower=null;
publicStringnodeText=null;
}
}
}
}
打印结果
{
city_code:
101010100
city_name:
北京
date_time:
2012-11-0108:
00
nodeText:
null
detail[
detail{
date:
2012-11-01
pt:
2012-11-0108:
00
nodeText:
null
day{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
15.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
night{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
4.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
}
detail{
date:
2012-11-02
pt:
2012-11-0108:
00
nodeText:
null
day{
nodeText:
null
weather{
img:
1
info:
多云
temperature:
13.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
night{
nodeText:
null
weather{
img:
7
info:
小雨
temperature:
6.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
}
detail{
date:
2012-11-03
pt:
2012-11-0108:
00
nodeText:
null
day{
nodeText:
null
weather{
img:
8
info:
中雨
temperature:
7.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
night{
nodeText:
null
weather{
img:
6
info:
雨夹雪
temperature:
0.0
nodeText:
null
}
wind{
direct:
北风
power:
4~5级
nodeText:
null
}
}
}
detail{
date:
2012-11-04
pt:
2012-11-0108:
00
nodeText:
null
day{
nodeText:
null
weather{
img:
2
info:
阴
temperature:
5.0
nodeText:
null
}
wind{
direct:
北风
power:
4~5级
nodeText:
null
}
}
night{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
-3.0
nodeText:
null
}
wind{
direct:
北风
power:
3~4级
nodeText:
null
}
}
}
detail{
date:
2012-11-05
pt:
2012-11-0108:
00
nodeText:
null
day{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
7.0
nodeText:
null
}
wind{
direct:
北风
power:
3~4级
nodeText:
null
}
}
night{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
-4.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
}
detail{
date:
2012-11-06
pt:
2012-11-0108:
00
nodeText:
null
day{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
10.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
night{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
-4.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
}
detail{
date:
2012-11-07
pt:
2012-11-0108:
00
nodeText:
null
day{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
11.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
night{
nodeText:
null
weather{
img:
0
info:
晴
temperature:
0.0
nodeText:
null
}
wind{
direct:
无持续风向
power:
微风
nodeText:
null
}
}
}
]
}
下面我把代码分享给大家:
(就两个方法,很简单吧!
)
publicstaticStringobjectToString(Objecto)
{
StringBuffers=newStringBuffer();
s.append("{\n");
printObject(o,s,"");
s.append("}\n");
returns.toString();
}
privatestaticvoidprintObject(Objecto,StringBuffers,Stringblank)
{
Classclazz=o.getClass();
Field[]fields=clazz.getDeclaredFields();
for(inti=0;i{
try{
Stringvalue=fields[i].get(o).toString();
//判断是不是对象
if(value.indexOf("@")!
=-1)
{
if(value.startsWith("[L"))//如果是数组
{
s.append(blank+fields[i].getName()+"[\n");
for(intj=0;j{
s.append(blank+""+fields[i].getName()+"{\n");
printObject(Array.get(fields[i].get(o),j),s,blank+"");
s.append(blank+""+"}\n");
}
s.append(blank+"]\n");
}else{
s.append(blank+fields[i].getName()+"{\n");
printObject(fields[i].get(o),s,blank+"");
s.append(blank+"}\n");
}
}else{
s.append(blank+fields[i].getName()+":
");
s.append(value+"\n");
}
}catch(Exceptione){
if(!
fields[i].getName().startsWith("this"))
{
s.append(blank+fields[i].getName()+":
");
s.append("null\n");
}
}
}
}