首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

XML使用字符串拼接循环拼接有关问题

2013-12-07 
XML使用字符串拼接循环拼接问题?如上图所示,我现在要做一个三维图表:这是标注XML格式:chart palette2

XML使用字符串拼接循环拼接问题?
XML使用字符串拼接循环拼接有关问题
如上图所示,我现在要做一个三维图表:
这是标注XML格式:<chart palette='2' caption='Country Comparison' showLabels='1' showvalues='0' decimals='0' numberPrefix='$' clustered='0' exeTime='1.5' showPlotBorder='0' zGapPlot='30' zDepth='90' divLineEffect='emboss' startAngX='10' endAngX='18' startAngY='-10' endAngY='-40'>

   <categories>
        <category label='Austria' />
        <category label='Brazil' />
        <category label='France' />
        <category label='Germany' />
        <category label='USA' />
   </categories>   

    <dataset seriesName='1998' color='8BBA00' showValues='0'>
        <set value='45000.65' />
        <set value='44835.76' />
        <set value='18722.18' />
        <set value='77557.31' />
        <set value='92633.68' />

    </dataset>
    <dataset seriesName='1997' color='F6BD0F' showValues='0'>
        <set value='57401.85' />
        <set value='41941.19' />
        <set value='45263.37' />
        <set value='117320.16' />
        <set value='114845.27' />
    </dataset>


    <dataset seriesName='1996' color='AFD8F8' showValues='0'>
        <set value='25601.34' />
        <set value='20148.82' />
        <set value='17372.76' />
        <set value='35407.15' />
        <set value='38105.68' />
    </dataset>

    <styles>
        <definition>
           <style name='captionFont' type='font' size='15' />
        </definition>
        <application>
            <apply toObject='caption' styles='captionfont' />
        </application>
    </styles>

</chart>

下面是我自己在java类里拼接但是每次到循环哪里都拼接不对,导致数据输出错误,图表无法显示:
public String buildChart(List<YearSale> datas) {
StringBuilder sb = new StringBuilder("<?xml version='1.0' encoding='UTF-8'?>");
sb.append("chart palette='2' caption='年份销售' yAxisName='Units'  showLabels='1' showvalues='0' decimals='0' numberPrefix='$' clustered='0' exeTime='1.5' showPlotBorder='0' zGapPlot='30' zDepth='90' divLineEffect='emboss' startAngX='10' endAngX='18' startAngY='-10' endAngY='-40'>");
if (null != datas && datas.size() > 0) {
int i = 0;
        sb.append("<categories>");
        //向label属性里面添加姓名
        for (YearSale sale : datas) {
        sb.append("<category label='"+sale.getSaleName()+"'/>");
i++;
}
        sb.append("</categories>");
        //双层循环XXXX年份的销售额
        for (YearSale yearSale : datas) {
        sb.append("<dataset seriesName='"+yearSale.getSaleYear()+"'  showValues='0'>");
        i++;
        for (int j = 0; j < saleList.size(); j++) {
        sb.append("<set value='"+yearSale.getSaleMoney()+"'/>");
        }
}
        sb.append(" </dataset>"); 
       
    }
sb.append("<styles><definition> <style name='captionFont' type='font' size='15' /> </definition><application> <apply toObject='caption' styles='captionfont' /> </application></styles></chart>");


System.out.println(sb.toString());
return sb.toString();
}


双层循环哪里我写错了导致XML格式最终输出为
<?xml version='1.0' encoding='UTF-8'?>chart palette='2' caption='年份销售' yAxisName='Units'  showLabels='1' showvalues='0' decimals='0' numberPrefix='$' clustered='0' exeTime='1.5' showPlotBorder='0' zGapPlot='30' zDepth='90' divLineEffect='emboss' startAngX='10' endAngX='18' startAngY='-10' endAngY='-40'>
<categories>
<category label='张三'/>
<category label='张三'/>
<category label='张三'/>
<category label='李四'/>
<category label='李四'/>
<category label='李四'/>
<category label='王麻子'/>
<category label='王麻子'/>
<category label='王麻子'/>
<category label='飞人'/>
<category label='飞人'/>
<category label='飞人'/>
<category label='黑手'/>
<category label='黑手'/>
<category label='黑手'/>
</categories>
<dataset seriesName='2011'  showValues='0'>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<set value='43212'/>
<dataset seriesName='2012'  showValues='0'>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<set value='54212'/>
<dataset seriesName='2013'  showValues='0'>
<set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/><set value='64312'/>
<dataset seriesName='2011'  showValues='0'><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/><set value='96862'/>
<dataset seriesName='2012'  showValues='0'><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/><set value='75843'/>
<dataset seriesName='2013'  showValues='0'><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/><set value='94732'/>
<dataset seriesName='2011'  showValues='0'><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/><set value='76321'/>
<dataset seriesName='2012'  showValues='0'><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/><set value='37593'/>
<dataset seriesName='2013'  showValues='0'><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/><set value='48203'/>


<dataset seriesName='2011'  showValues='0'><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/><set value='32532'/>
<dataset seriesName='2012'  showValues='0'><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/><set value='55438'/>
<dataset seriesName='2013'  showValues='0'><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/><set value='64321'/>
<dataset seriesName='2011'  showValues='0'><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/><set value='44213'/>
<dataset seriesName='2012'  showValues='0'><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/><set value='52321'/>
<dataset seriesName='2013'  showValues='0'><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/><set value='60341'/> </dataset>

<styles><definition> <style name='captionFont' type='font' size='15' /> </definition><application> <apply toObject='caption' styles='captionfont' /> </application></styles></chart>



就是循环拼接字符串哪里错了。哪位大大说一下谢谢了!! XML JAVA String 循环
[解决办法]

 for (YearSale yearSale : datas) {
         sb.append("<dataset seriesName='"+yearSale.getSaleYear()+"'  showValues='0'>");
         i++;
         for (int j = 0; j < saleList.size(); j++) { 
         sb.append("<set value='"+yearSale.getSaleMoney()+"'/>"); //这里必然输出时一样的数值
         }
         //这里没有dataset的结尾
}

每个dataset里对应着一组set数据,你用一个StringBuffer控制不好的话,可以用多个
[解决办法]
你可以在最后生成的一步debug 看下结果。然后对比就清晰了。

热点排行