gpt4 book ai didi

java如何解析选定的sql行以将值获取到xml

转载 作者:行者123 更新时间:2023-12-01 12:53:43 25 4
gpt4 key购买 nike

我需要获取表数据来制作 xml 文件并对其进行签名。 XML 文件必须类似于:

<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>

所以我在从表中选择数据时遇到问题。

如您所见,发票包含有关客户、卖家、产品、产品详细信息的信息。

一张发票可以包含一种或多种产品。

例如,3 张发票,从表中选择行:

1row: INVTYPE1 CREDATE1 TRNVRDATE1 CUSTNAME1 CUSTADR1 CUSTBIN1 SELLNAME1 SELLADR1 SELLBIN1 PRODCURR1 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1
2row: INVTYPE1 CREDATE1 TRNVRDATE1 CUSTNAME1 CUSTADR1 CUSTBIN1 SELLNAME1 SELLADR1 SELLBIN1 PRODCURR1 proddescr2 prodndsam2 prodprWtax2 prodprWOtax2 prodtrnvrsize2
3row: INVTYPE2 CREDATE2 TRNVRDATE2 CUSTNAME2 CUSTADR2 CUSTBIN2 SELLNAME2 SELLADR2 SELLBIN2 PRODCURR2 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1
4row: INVTYPE3 CREDATE3 TRNVRDATE3 CUSTNAME3 CUSTADR3 CUSTBIN3 SELLNAME3 SELLADR3 SELLBIN3 PRODCURR3 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1

当我使用此代码设置预创建数组的值时:

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++;
}

我有这样的输出:

Invoice 1:

INVTYPE1 CREDATE1 TRNVRDATE1 CUSTNAME1 CUSTADR1 CUSTBIN1 SELLNAME1 SELLADR1 SELLBIN1 PRODCURR1 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1

Invoice 2:

INVTYPE1 CREDATE1 TRNVRDATE1 CUSTNAME1 CUSTADR1 CUSTBIN1 SELLNAME1 SELLADR1 SELLBIN1 PRODCURR1 proddescr2 prodndsam2 prodprWtax2 prodprWOtax2 prodtrnvrsize2

Invoice 3:

INVTYPE2 CREDATE2 TRNVRDATE2 CUSTNAME2 CUSTADR2 CUSTBIN2 SELLNAME2 SELLADR2 SELLBIN2 PRODCURR2 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1

Invoice 4:

INVTYPE3 CREDATE3 TRNVRDATE3 CUSTNAME3 CUSTADR3 CUSTBIN3 SELLNAME3 SELLADR3 SELLBIN3 PRODCURR3 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1

但是只有3张发票,因为第1张发票有2个产品位置。所以它一定是这样的:

Invoice 1:

INVTYPE1 CREDATE1 TRNVRDATE1 CUSTNAME1 CUSTADR1 CUSTBIN1 SELLNAME1 SELLADR1 SELLBIN1 PRODCURR1 proddescr1 proddescr2 prodndsam1 prodndsam2 prodprWtax1 prodprWtax2 prodprWOtax1 prodprWOtax2 prodtrnvrsize1 prodtrnvrsize2

Invoice 2:

INVTYPE2 CREDATE2 TRNVRDATE2 CUSTNAME2 CUSTADR2 CUSTBIN2 SELLNAME2 SELLADR2 SELLBIN2 PRODCURR2 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1

Invoice 3:

INVTYPE3 CREDATE3 TRNVRDATE3 CUSTNAME3 CUSTADR3 CUSTBIN3 SELLNAME3 SELLADR3 SELLBIN3 PRODCURR3 proddescr1 prodndsam1 prodprWtax1 prodprWOtax1 prodtrnvrsize1

你能帮我解决这个问题吗?如何获得一张发票的多个产品位置?如果 1 个发票有 1 个产品位置,则可以正常创建 xml 文件。但是,如果 1 个发票有 2 个或更多产品位置,则将创建 xml 文件,就像由于 2 个或更多位置而有 2 个或更多发票一样。请帮助我。

附注我无法使用“db data to xml”转换库,因为我必须向 xml 添加一些不是从 db 获取的信息。

最佳答案

修改您的查询以在选择中包含 o.id

 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");
}
}

关于java如何解析选定的sql行以将值获取到xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24033945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com