java如何解析选定的sql行以将值转换为xml
我需要获取表数据以生成xml文件并对其签名。XML文件必须类似于:java如何解析选定的sql行以将值转换为xml,java,sql,select,Java,Sql,Select,我需要获取表数据以生成xml文件并对其签名。XML文件必须类似于: <invoice credate="" invtype="" turnoverdate=""> <customers> <customer custname="" custadr="" custbin=""> </customer>
<invoice credate="" invtype="" turnoverdate="">
<customers>
<customer custname="" custadr="" custbin="">
</customer>
</customers>
<products curr="" totalExciseAmount="0" totalNdsAmount="0" totalPriceWithTax="200" totalPriceWithoutTax="200" totalTurnoverSize="200">
<product descr="aa" ndsAmount="0" priceWithTax="100" priceWithoutTax="100" turnoverSize="100"/>
<product descr="bb" ndsAmount="0" priceWithTax="100" priceWithoutTax="100" turnoverSize="100"/>
</products>
<sellers>
<seller sellname="" selladr="" sellbin="">
</seller>
</sellers>
</invoice>
当我使用此代码设置预创建数组的值时:
int i=0;
while (rows.next()) {
System.out.println("Invoice "+(i+1)+" :");
crdate[i] = rows.getDate("credate");
invtype[i] = rows.getString("invtype");
turnoverdate[i] = rows.getDate("turnoverdate");
custname[i] = rows.getString("custname");
custadr[i] = rows.getString("custadr");
custbin[i] = rows.getString("custbin");
curr[i] = rows.getString("curr");
ndsAmount[i] = rows.getFloat("ndsAmount");
priceWithTax[i] = rows.getFloat("priceWithTax");
priceWithoutTax[i] = rows.getFloat("priceWithoutTax");
turnoverSize[i] = rows.getFloat("turnoverSize");
sellname[i] = rows.getString("sellname");
selladr[i] = rows.getString("selladr");
sellbin[i] = rows.getString("sellbin");
i++;
}
我有如下输出:
发票1:
INVTYPE1 CREDATE1 TRNVRDATE1 CUSTNAME 1 CUSTADR1 CUSTBIN1 SELLNAME 1 SELLADR1 SELLBIN1 PRODCURR1 PRODESCR1 prodndsam1 PRODUPRWTAX1 PRODUPRWOTAX 1 PRODUTRNVRSIZE1
发票2:
INVTYPE1凭证1 TRNVRDATE1客户名称1客户名称1销售名称1销售名称1产品描述2产品名称2产品名称2产品名称2产品名称2产品名称2产品名称2产品名称2产品名称2产品认证2
发票3:
INVTYPE2 Credate 2 TRNVRDATE 2 CUSTNAME2 CUSTADR2 CUSTBIN2 SELLNAME2 SELLADR2 SELLBIN2 PRODCURR2 proddescr1 prodndsam1 ProdRwtax1 ProdRwoTax1 ProdRvSize1
发票4:
INVTYPE 3凭证3 TRNVRDATE 3 CUSTNAME 3 CUSTADR3 CUSTBIN3 SELLNAME 3 SELLADR3 SELLBIN3 PRODUCCURR3 PRODUDESCR1 PRODUNDSAM1 PRODUPRWTAX1 PRODUPRWOTAX 1 PRODUTRNVRSIZE1
但是只有3张发票,因为第一张发票有2个产品位置。所以它必须是这样的:
<invoice credate="" invtype="" turnoverdate="">
<customers>
<customer custname="" custadr="" custbin="">
</customer>
</customers>
<products curr="" totalExciseAmount="0" totalNdsAmount="0" totalPriceWithTax="200" totalPriceWithoutTax="200" totalTurnoverSize="200">
<product descr="aa" ndsAmount="0" priceWithTax="100" priceWithoutTax="100" turnoverSize="100"/>
<product descr="bb" ndsAmount="0" priceWithTax="100" priceWithoutTax="100" turnoverSize="100"/>
</products>
<sellers>
<seller sellname="" selladr="" sellbin="">
</seller>
</sellers>
</invoice>
发票1:
INVTYPE1 Credate 1 TRNVrDate 1 CUSTNAME 1 CUSTADR1 CUSTBIN1 SELLNAME 1 SELLADR1 SELLBIN1 PRODCUR1 PRODESCR2 PRODNDSCR2 prodndsam1 PRODNDSCR2 PRODNDRWTAX1 PRODNPRWOTAX 1 PRODNPRWOTAX 2 PRODNDRWOTAX 2 PRODNTRNVRSIZE1 PRODNTRNVRSIZE2
发票2:
INVTYPE2 Credate 2 TRNVRDATE 2 CUSTNAME2 CUSTADR2 CUSTBIN2 SELLNAME2 SELLADR2 SELLBIN2 PRODCURR2 proddescr1 prodndsam1 ProdRwtax1 ProdRwoTax1 ProdRvSize1
发票3:
INVTYPE 3凭证3 TRNVRDATE 3 CUSTNAME 3 CUSTADR3 CUSTBIN3 SELLNAME 3 SELLADR3 SELLBIN3 PRODUCCURR3 PRODUDESCR1 PRODUNDSAM1 PRODUPRWTAX1 PRODUPRWOTAX 1 PRODUTRNVRSIZE1
你能帮我解决这个问题吗。如何为一张发票获取多个产品位置?如果1张发票上有1个产品位置,则正常创建xml文件。但是,如果一张发票有两个或多个产品位置,则由于两个或多个位置,将创建xml文件,就像有两张或多张发票一样。请帮帮我
另外,我不能使用“db data to xml”转换LIB,因为我必须向xml中添加一些不是从db中获取的信息。修改您的查询,将
o.id
包含在select中
select o.id, o.invtype, o.curr, o.crdate, o.trnvrdate, o.custname, o.custadr,
o.custbin, o.sellname, o.selladr, o.sellbin, d.descr, d.ndsamount, d.prWTax,
d.prWOTax, d.trnvrsize from inv o, inv_dtl d
where o.dep_id = d.dep_id and o.id= d.id
然后在保留产品的同时,使用o.id
修改循环以消除发票中的重复数据
long tempId = 0;
while (rows.next()) {
if (tempId == rows.getLong("id")) {
// add productN
} else {
// add invoice + product1
tempId = rows.getLong("id");
}
}
您还可以发布您的SQL查询吗?@A.Agarwal SQL查询:
选择o.invtype、o.curr、o.crdate、o.trnvrdate、o.custname、o.custard、o.custbin、o.sellname、o.selladr、o.sellbin、d.descr、d.ndsamount、d.prWTax、d.prWOTax、d.trnvrsize from inv o,inv_dtl d其中o.dep_id=d.dep_id和o.id=d.id
@bakash_erni如果它解决了您的问题,您可以接受答案-