从数据库得到数据导出指定格式的xml文件,上传到NC接口,返回回执到本地一个xml文件
来源:互联网 发布:电梯运行优化 编辑:程序博客网 时间:2024/06/05 04:17
1、先把指定格式的本地文件(.xml)导入NC接口,返回一个回执文件(xml文件);
2、从中间库导出指定格式的文件(.xml),在导入到NC接口,返回一个回执文件(.xml);
xml模板格式:
<?xml version="1.0" encoding="gb2312"?><ufinterface roottag="voucher" billtype="gl" replace="Y" receiver="1112" sender="01" isexchange="Y" proc="add" operation="req" filename="d:\2017-9-15_1112\1112_41.xml"> <voucher id="wjy735"> <voucher_head> <company>1060325</company> <voucher_type>记账凭证</voucher_type> <fiscal_year>2017</fiscal_year> <accounting_period>10</accounting_period> <voucher_id>0</voucher_id> <attachment_number>1</attachment_number> <prepareddate>2017-10-15</prepareddate> <enter>18031</enter> <signature>N</signature> <voucher_making_system>GL</voucher_making_system> <memo1>735</memo1> <cmspzid>735</cmspzid> </voucher_head> <voucher_body> <entry> <entry_id>1</entry_id> <account_code>100201</account_code> <abstract>现金存行</abstract> <currency>CNY</currency> <unit_price>0</unit_price> <exchange_rate1>1</exchange_rate1> <exchange_rate2>1</exchange_rate2> <debit_quantity>0</debit_quantity> <primary_debit_amount>20581.70</primary_debit_amount> <secondary_debit_amount>0</secondary_debit_amount> <natural_debit_currency>20581.70</natural_debit_currency> <credit_quantity>0</credit_quantity> <primary_credit_amount>0</primary_credit_amount> <secondary_credit_amount>0</secondary_credit_amount> <natural_credit_currency>0</natural_credit_currency> <auxiliary_accounting> <item name="银行账户">44037001040005592</item> <item name="现金流量项目">1111</item> </auxiliary_accounting> </entry> <entry> <entry_id>2</entry_id> <account_code>1001</account_code> <abstract>现金存行</abstract> <currency>CNY</currency> <unit_price>0</unit_price> <exchange_rate1>1</exchange_rate1> <exchange_rate2>1</exchange_rate2> <debit_quantity>0</debit_quantity> <primary_debit_amount>0</primary_debit_amount> <secondary_debit_amount>0</secondary_debit_amount> <natural_debit_currency>0</natural_debit_currency> <credit_quantity>0</credit_quantity> <primary_credit_amount>20581.70</primary_credit_amount> <secondary_credit_amount>0</secondary_credit_amount> <natural_credit_currency>20581.70</natural_credit_currency> <auxiliary_accounting> <item name="现金流量项目">1111</item> </auxiliary_accounting> </entry> </voucher_body>z </voucher></ufinterface>注:
一个xml文件中可以包含一个或多个<voucher id="735">
一个<voucher>体中包含一个<voucher_head>和<voucher_body>
一个<voucher_body>体中包含一个或多个<entry>
一个<entry>体中包含一个<auxiliary_accounting>
一个<auxiliary_accounting>体中包含多个<item>
一个<voucher>体中包含一个<voucher_head>和<voucher_body>
一个<voucher_body>体中包含一个或多个<entry>
一个<entry>体中包含一个<auxiliary_accounting>
一个<auxiliary_accounting>体中包含多个<item>
连接数据库导出指定格式的XML代码一:(String)
package com.accord.test;import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.stream.StreamResult;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.io.DocumentSource;public class ConnDbBackXml {public static void main(String[] args) throws Exception{long a = System.currentTimeMillis();ConnDbBackXml cd = new ConnDbBackXml();String xmlString = cd.connOracleDb();//System.out.println("最终结果:" + xmlString);cd.stringToXml(xmlString);System.out.println(System.currentTimeMillis()-a);}public void stringToXml(String xmlString) throws Exception {Document resDoc = DocumentHelper.parseText(xmlString);// 对回执结果的后续处理/************document转化为xml*************/TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer();DocumentSource source = new DocumentSource(resDoc);transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //设置文档的换行与缩进transformer.setOutputProperty(OutputKeys.INDENT, "YES"); //设置日期格式SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss"); String resFile = "E:\\"+fmt.format(new Date())+".xml"; StreamResult result = new StreamResult(new File(resFile)); transformer.transform(source,result); System.out.println("======生成xml文件成功=======");}@SuppressWarnings({ "unchecked", "rawtypes", "unused" })public String connOracleDb() {Connection con = null;// 创建一个数据库连接PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用StatementResultSet rs = null;// 创建一个结果集对象String xmlString = "<?xml version=\"1.0\" encoding=\"gb2312\"?>" + "\t" + "\r\n" + "<ufinterface roottag=\"voucher\" billtype=\"gl\" replace=\"Y\" receiver=\"1112\" sender=\"01\" isexchange=\"Y\" proc=\"add\" operation=\"req\" filename=\"e:\\1.xml\">" + "\t";try {//// sid:fadb ip:10.10.1.15 user:testjk password:test11jkClass.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序System.out.println("开始尝试连接数据库!");String url = "jdbc:oracle:" + "thin:@10.10.1.15:1521:fadb";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名String user = "testjk";// 用户名,系统默认的账户名String password = "test11jk";// 你安装时选设置的密码con = DriverManager.getConnection(url, user, password);// 获取连接System.out.println("连接成功!");String sql = "select * from nc_ext_fa_ls_pz_doc t where t.company='1125'";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql);// 实例化预编译语句//pre.setString(1, "小茗同学");// 设置参数,前面的1表示参数的索引,而不是表中列名的索引rs = pre.executeQuery();// 执行查询,注意括号中不需要再加参数//System.out.println(result.getRow());//result.last();//int rowCount=result.getRow() ;//System.out.println(rowCount); "\t\t"List listId = new ArrayList();List listVoucher_Heads = new ArrayList();List listVoucher_Bodys = new ArrayList();String voucher_head = "";while (rs.next()){listId.add(rs.getString("id").toString());voucher_head = "\r\n" + "\t" + "<voucher id=\"" + rs.getString("id") + "\">" + "\r\n" + "\t\t";voucher_head = voucher_head + "<voucher_head>" + "\r\n" + "\t\t\t"; //开始voucher_head = voucher_head + "<company>" + rs.getString("company") + "</company>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<voucher_type>" + rs.getString("voucher_type") + "</voucher_type>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<fiscal_year>" + rs.getString("fiscal_year") + "</fiscal_year>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<accounting_period>" + rs.getString("accounting_period") + "</accounting_period>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<voucher_id>" + rs.getString("voucher_id") + "</voucher_id>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<attachment_number>" + rs.getString("attachment_number") + "</attachment_number>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<prepareddate>" + rs.getString("prepareddate") + "</prepareddate>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<enter>" + rs.getString("enter") + "</enter>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<signature>" + rs.getString("signature") + "</signature>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<voucher_making_system>" + rs.getString("voucher_making_system") + "</voucher_making_system>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<memo1>" + rs.getString("memo1") + "</memo1>" + "\r\n" + "\t\t\t";voucher_head = voucher_head + "<cmspzid>" + rs.getString("id") + "</cmspzid>" + "\r\n" + "\t\t";voucher_head = voucher_head + "</voucher_head>" + "\r\n"; //结束listVoucher_Heads.add(voucher_head.toString());}//listId.size() 大小为:主表的记录数,有几个记录就有几个<voucher_head>,遍历for (int i = 0; i < listId.size(); i++) {//System.out.println("从集合里面遍历id:" + listId.get(i));//通过id,从细表中查询结果sql = "select * from nc_ext_fa_ls_pz_dtl t where t.docid= ? order by t.entry_id ";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);// 实例化预编译语句pre.setString(1, listId.get(i).toString());// 设置参数,前面的1表示参数的索引,而不是表中列名的索引rs = pre.executeQuery();// 执行查询,注意括号中不需要再加参数System.out.println("细表开始");List listSourceIds = new ArrayList();String voucher_body = "\t\t" + "<voucher_body>" + "\r\n" + "\t\t\t";while(rs.next()) {//System.out.println("得到entry_id:" + rs.getString("entry_id"));//voucher_body = "<voucher_body>" + "\t";//String voucher_body = "<voucher_body>" + "\t";voucher_body = voucher_body + "<entry>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<entry_id>" + rs.getString("entry_id") + "</entry_id>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<account_code>" + rs.getString("account_code") + "</account_code>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<abstract>" + rs.getString("abstract") + "</abstract>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<currency>" + rs.getString("currency") + "</currency>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<unit_price>" + rs.getString("unit_price") + "</unit_price>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<exchange_rate1>" + rs.getString("exchange_rate1") + "</exchange_rate1>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<exchange_rate2>" + rs.getString("exchange_rate2") + "</exchange_rate2>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<debit_quantity>" + rs.getString("debit_quantity") + "</debit_quantity>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<primary_debit_amount>" + rs.getString("primary_debit_amount") + "</primary_debit_amount>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<secondary_debit_amount>" + rs.getString("secondary_debit_amount") + "</secondary_debit_amount>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<natural_debit_currency>" + rs.getString("natural_debit_currency") + "</natural_debit_currency>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<credit_quantity>" + rs.getString("credit_quantity") + "</credit_quantity>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<primary_credit_amount>" + rs.getString("primary_credit_amount") + "</primary_credit_amount>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<secondary_credit_amount>" + rs.getString("secondary_credit_amount") + "</secondary_credit_amount>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<natural_credit_currency>" + rs.getString("natural_credit_currency") + "</natural_credit_currency>" + "\r\n" + "\t\t\t\t";voucher_body = voucher_body + "<auxiliary_accounting>" + "\r\n";//代办item 开始:String sourceid = rs.getString("sourceid");listSourceIds.add(sourceid);//System.out.println("sourceid:" + sourceid);//Connection con2 = null;// 创建一个数据库连接//PreparedStatement pre2 = null;// 创建预编译语句对象,一般都是用这个而不用Statement//ResultSet rs2 = null;// 创建一个结果集对象String sql2 = "select * from nc_ext_fa_ls_pz_tiny t where t.dtlsourceid = ? ";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql2);// 实例化预编译语句pre.setString(1, rs.getString("sourceid").toString());// 设置参数,前面的1表示参数的索引,而不是表中列名的索引ResultSet rs2 = pre.executeQuery();// 执行查询,注意括号中不需要再加参数while (rs2.next()) {voucher_body = voucher_body + "\t\t\t\t\t" + "<item name=\"" + rs2.getString("name") + "\">" + rs2.getString("code") + "</item>" + "\r\n";//System.out.println("name:code:" + rs2.getString("name") + rs2.getString("code"));}//代办item 结束:voucher_body = voucher_body + "\t\t\t\t" + "</auxiliary_accounting>" + "\r\n" + "\t";if(rs.isLast()) {voucher_body = voucher_body + "\t\t" + "</entry>" + "\r\n" + "\t\t";}else{voucher_body = voucher_body + "\t\t" + "</entry>" + "\r\n" + "\t\t\t";}//System.out.println("voucher_body:" + voucher_body);}/*for (int j = 0; j < listSourceIds.size(); j++) {sql = "select * from nc_ext_fa_ls_pz_tiny t where t.dtlsourceid = ? ";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql);// 实例化预编译语句pre.setString(1, listSourceIds.get(j).toString());// 设置参数,前面的1表示参数的索引,而不是表中列名的索引rs = pre.executeQuery();// 执行查询,注意括号中不需要再加参数while (rs.next()) {//voucher_body = voucher_body + "<item name=\"" + rs.getString("name") + "\">" + rs.getString("code") + "</item>" + "\t";System.out.println("name:code:" + rs.getString("name") + rs.getString("code"));}}*//*System.out.println("listSourceIds的大小:" + listSourceIds.size());for (int j = 0; j < listSourceIds.size(); j++) {sql = "select * from nc_ext_fa_ls_pz_tiny t where t.dtlsourceid = ? ";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql);// 实例化预编译语句pre.setString(1, listSourceIds.get(j).toString());// 设置参数,前面的1表示参数的索引,而不是表中列名的索引rs = pre.executeQuery();// 执行查询,注意括号中不需要再加参数String items = "" +"\t";System.out.println("sourceIds+:" + listSourceIds.get(j).toString());while (rs.next()) {//voucher_body = voucher_body + "<item name=\"" + rs.getString("name") + "\">" + rs.getString("code") + "</item>" + "\t";items = items + "<item name=\"" + rs.getString("name") + "\">" + rs.getString("code") + "</item>" + "\t";//System.out.println("name:code:" + rs.getString("name") + rs.getString("code"));}System.out.println("items1:" + items);}*///System.out.println("voucher_body:结束前的:" + voucher_body);xmlString = xmlString + (listVoucher_Heads.get(i) + voucher_body + "</voucher_body>" + "\r\n" + "\t" + "</voucher>");//System.out.println("整合头和体:" + (listVoucher_Heads.get(i) + voucher_body + "\t" + "</voucher_body>" + "\t" + "</voucher>"));System.out.println("细表结束");}xmlString = xmlString + "\r\n" + "</ufinterface>";//System.out.println("xmlString:" + (xmlString + "</ufinterface>"));} catch (Exception e) {e.printStackTrace();} finally {try {// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源// 注意关闭的顺序,最后使用的最先关闭if (rs != null)rs.close();if (pre != null)pre.close();if (con != null)con.close();System.out.println("数据库连接已关闭!");} catch (Exception e) {e.printStackTrace();}}return xmlString;}}连接数据库导出指定格式的XML代码二:(StringBuffer)
package com.accord.test;import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.stream.StreamResult;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.io.DocumentSource;public class ConnDbBackXml02 {public static void main(String[] args) throws Exception{long a = System.currentTimeMillis();ConnDbBackXml cd = new ConnDbBackXml();String xmlString = cd.connOracleDb();cd.stringToXml(xmlString);System.out.println(System.currentTimeMillis()-a);}public void stringToXml(String xmlString) throws Exception {Document resDoc = DocumentHelper.parseText(xmlString);// 对回执结果的后续处理/************document转化为xml*************/TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer();DocumentSource source = new DocumentSource(resDoc);transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //设置文档的换行与缩进transformer.setOutputProperty(OutputKeys.INDENT, "YES"); //设置日期格式SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss"); String resFile = "E:\\"+fmt.format(new Date())+".xml"; StreamResult result = new StreamResult(new File(resFile)); transformer.transform(source,result); System.out.println("======生成xml文件成功=======");}@SuppressWarnings({ "unchecked", "rawtypes", "unused" })public String connOracleDb() {Connection con = null;// 创建一个数据库连接PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用StatementResultSet rs = null;// 创建一个结果集对象StringBuffer xmlString = new StringBuffer();xmlString.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "\t" + "\r\n" + "<ufinterface roottag=\"voucher\" billtype=\"gl\" replace=\"Y\" receiver=\"1112\" sender=\"01\" isexchange=\"Y\" proc=\"add\" operation=\"req\" filename=\"e:\\1.xml\">" + "\t");try {// sid:fadb ip:10.10.1.15 user:testjk password:test11jkClass.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序System.out.println("开始尝试连接数据库!");String url = "jdbc:oracle:" + "thin:@10.10.1.15:1521:fadb";// 127.0.0.1是本机地址,XE是精简版Oracle的默认数据库名String user = "testjk";// 用户名,系统默认的账户名String password = "test11jk";// 你安装时选设置的密码con = DriverManager.getConnection(url, user, password);// 获取连接System.out.println("连接成功!");String sql = "select * from nc_ext_fa_ls_pz_doc t where t.company='1125'";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql);// 实例化预编译语句rs = pre.executeQuery();// 执行查询,注意括号中不需要再加参数List listId = new ArrayList();List listVoucher_Heads = new ArrayList();List listVoucher_Bodys = new ArrayList();StringBuffer voucher_head = new StringBuffer();while (rs.next()){listId.add(rs.getString("id").toString());voucher_head.append("\r\n" + "\t" + "<voucher id=\"" + rs.getString("id") + "\">" + "\r\n" + "\t\t");voucher_head.append("<voucher_head>" + "\r\n" + "\t\t\t"); //开始voucher_head.append("<company>" + rs.getString("company") + "</company>" + "\r\n" + "\t\t\t");voucher_head.append("<voucher_type>" + rs.getString("voucher_type") + "</voucher_type>" + "\r\n" + "\t\t\t");voucher_head.append("<fiscal_year>" + rs.getString("fiscal_year") + "</fiscal_year>" + "\r\n" + "\t\t\t");voucher_head.append("<accounting_period>" + rs.getString("accounting_period") + "</accounting_period>" + "\r\n" + "\t\t\t");voucher_head.append("<voucher_id>" + rs.getString("voucher_id") + "</voucher_id>" + "\r\n" + "\t\t\t");voucher_head.append("<attachment_number>" + rs.getString("attachment_number") + "</attachment_number>" + "\r\n" + "\t\t\t");voucher_head.append("<prepareddate>" + rs.getString("prepareddate") + "</prepareddate>" + "\r\n" + "\t\t\t");voucher_head.append("<enter>" + rs.getString("enter") + "</enter>" + "\r\n" + "\t\t\t");voucher_head.append("<signature>" + rs.getString("signature") + "</signature>" + "\r\n" + "\t\t\t");voucher_head.append("<voucher_making_system>" + rs.getString("voucher_making_system") + "</voucher_making_system>" + "\r\n" + "\t\t\t");voucher_head.append("<memo1>" + rs.getString("memo1") + "</memo1>" + "\r\n" + "\t\t\t");voucher_head.append("<cmspzid>" + rs.getString("id") + "</cmspzid>" + "\r\n" + "\t\t");voucher_head.append("</voucher_head>" + "\r\n"); //结束listVoucher_Heads.add(voucher_head.toString());}//listId.size() 大小为:主表的记录数,有几个记录就有几个<voucher_head>,遍历for (int i = 0; i < listId.size(); i++) {//通过id,从细表中查询结果sql = "select * from nc_ext_fa_ls_pz_dtl t where t.docid= ? order by t.entry_id ";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);// 实例化预编译语句pre.setString(1, listId.get(i).toString());// 设置参数,前面的1表示参数的索引,而不是表中列名的索引rs = pre.executeQuery();// 执行查询,注意括号中不需要再加参数System.out.println("细表开始");List listSourceIds = new ArrayList();StringBuffer voucher_body = new StringBuffer();voucher_body.append("\t\t" + "<voucher_body>" + "\r\n" + "\t\t\t");while(rs.next()) {voucher_body.append("<entry>" + "\r\n" + "\t\t\t\t");voucher_body.append("<entry_id>" + rs.getString("entry_id") + "</entry_id>" + "\r\n" + "\t\t\t\t");voucher_body.append("<account_code>" + rs.getString("account_code") + "</account_code>" + "\r\n" + "\t\t\t\t");voucher_body.append("<abstract>" + rs.getString("abstract") + "</abstract>" + "\r\n" + "\t\t\t\t");voucher_body.append("<currency>" + rs.getString("currency") + "</currency>" + "\r\n" + "\t\t\t\t");voucher_body.append("<unit_price>" + rs.getString("unit_price") + "</unit_price>" + "\r\n" + "\t\t\t\t");voucher_body.append("<exchange_rate1>" + rs.getString("exchange_rate1") + "</exchange_rate1>" + "\r\n" + "\t\t\t\t");voucher_body.append("<exchange_rate2>" + rs.getString("exchange_rate2") + "</exchange_rate2>" + "\r\n" + "\t\t\t\t");voucher_body.append("<debit_quantity>" + rs.getString("debit_quantity") + "</debit_quantity>" + "\r\n" + "\t\t\t\t");voucher_body.append("<primary_debit_amount>" + rs.getString("primary_debit_amount") + "</primary_debit_amount>" + "\r\n" + "\t\t\t\t");voucher_body.append("<secondary_debit_amount>" + rs.getString("secondary_debit_amount") + "</secondary_debit_amount>" + "\r\n" + "\t\t\t\t");voucher_body.append("<natural_debit_currency>" + rs.getString("natural_debit_currency") + "</natural_debit_currency>" + "\r\n" + "\t\t\t\t");voucher_body.append("<credit_quantity>" + rs.getString("credit_quantity") + "</credit_quantity>" + "\r\n" + "\t\t\t\t");voucher_body.append("<primary_credit_amount>" + rs.getString("primary_credit_amount") + "</primary_credit_amount>" + "\r\n" + "\t\t\t\t");voucher_body.append("<secondary_credit_amount>" + rs.getString("secondary_credit_amount") + "</secondary_credit_amount>" + "\r\n" + "\t\t\t\t");voucher_body.append("<natural_credit_currency>" + rs.getString("natural_credit_currency") + "</natural_credit_currency>" + "\r\n" + "\t\t\t\t");voucher_body.append("<auxiliary_accounting>" + "\r\n");//代办item 开始:String sourceid = rs.getString("sourceid");listSourceIds.add(sourceid);String sql2 = "select * from nc_ext_fa_ls_pz_tiny t where t.dtlsourceid = ? ";// 预编译语句,“?”代表参数pre = con.prepareStatement(sql2);// 实例化预编译语句pre.setString(1, rs.getString("sourceid").toString());// 设置参数,前面的1表示参数的索引,而不是表中列名的索引ResultSet rs2 = pre.executeQuery();// 执行查询,注意括号中不需要再加参数while (rs2.next()) {voucher_body.append("\t\t\t\t\t" + "<item name=\"" + rs2.getString("name") + "\">" + rs2.getString("code") + "</item>" + "\r\n");}//代办item 结束:voucher_body.append("\t\t\t\t" + "</auxiliary_accounting>" + "\r\n" + "\t");if(rs.isLast()) {voucher_body.append("\t\t" + "</entry>" + "\r\n" + "\t\t");}else{voucher_body.append("\t\t" + "</entry>" + "\r\n" + "\t\t\t");}}xmlString.append(listVoucher_Heads.get(i).toString() + voucher_body.toString() + "</voucher_body>" + "\r\n" + "\t" + "</voucher>");System.out.println("细表结束");}xmlString.append("\r\n" + "</ufinterface>");} catch (Exception e) {e.printStackTrace();} finally {try {// 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源// 注意关闭的顺序,最后使用的最先关闭if (rs != null)rs.close();if (pre != null)pre.close();if (con != null)con.close();System.out.println("数据库连接已关闭!");} catch (Exception e) {e.printStackTrace();}}return xmlString.toString();}}
运行代码一或代码二生成的文件一样:
导出的xml文件如下:<?xml version="1.0" encoding="UTF-8"?><ufinterface roottag="voucher" billtype="gl" replace="Y" receiver="1112" sender="01" isexchange="Y" proc="add" operation="req" filename="e:\1.xml"><voucher id="w764"><voucher_head><company>1060337</company><voucher_type>记账凭证</voucher_type><fiscal_year>2017</fiscal_year><accounting_period>09</accounting_period><voucher_id>0</voucher_id><attachment_number>1</attachment_number><prepareddate>2017-09-26</prepareddate><enter>15381</enter><signature>N</signature><voucher_making_system>GL</voucher_making_system><memo1>764</memo1><cmspzid>w764</cmspzid></voucher_head><voucher_body><entry><entry_id>1</entry_id><account_code>1221010606</account_code><abstract>见采购付款</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>5920</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>5920</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>2</entry_id><account_code>220202</account_code><abstract>付国药控股广州有限公司贷款,付款申请单号:00109108001170000010</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>106221.78</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>106221.78</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>0</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>0</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>3</entry_id><account_code>100202</account_code><abstract>付国药控股广州有限公司贷款,付款申请单号:00109108001170000010</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>58658.55</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>58658.55</natural_credit_currency><auxiliary_accounting><item name="现金流量项目">1121</item><item name="银行账户">44224701040008206</item><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>4</entry_id><account_code>1221010605</account_code><abstract>见采购付款</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>41643.23</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>41643.23</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry></voucher_body></voucher><voucher id="w1007"><voucher_head><company>1060337</company><voucher_type>记账凭证</voucher_type><fiscal_year>2017</fiscal_year><accounting_period>10</accounting_period><voucher_id>0</voucher_id><attachment_number>1</attachment_number><prepareddate>2017-10-29</prepareddate><enter>15381</enter><signature>N</signature><voucher_making_system>GL</voucher_making_system><memo1>1007</memo1><cmspzid>w1007</cmspzid></voucher_head><voucher_body><entry><entry_id>1</entry_id><account_code>100202</account_code><abstract>付国药控股广州有限公司贷款,付款申请单号:00109108001170000019</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>163163.59</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>163163.59</natural_credit_currency><auxiliary_accounting><item name="现金流量项目">1121</item><item name="银行账户">44224701040008206</item><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>2</entry_id><account_code>220202</account_code><abstract>付国药控股广州有限公司贷款,付款申请单号:00109108001170000019</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>277856.19</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>277856.19</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>0</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>0</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>3</entry_id><account_code>1221010606</account_code><abstract>见采购付款</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>10358</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>10358</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>4</entry_id><account_code>1221010605</account_code><abstract>见采购付款</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>104334.6</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>104334.6</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry></voucher_body></voucher><voucher id="w516"><voucher_head><company>1060337</company><voucher_type>记账凭证</voucher_type><fiscal_year>2017</fiscal_year><accounting_period>07</accounting_period><voucher_id>0</voucher_id><attachment_number>1</attachment_number><prepareddate>2017-07-28</prepareddate><enter>17977</enter><signature>N</signature><voucher_making_system>GL</voucher_making_system><memo1>516</memo1><cmspzid>w516</cmspzid></voucher_head><voucher_body><entry><entry_id>1</entry_id><account_code>220202</account_code><abstract>付国药控股广州有限公司贷款,付款申请单号:00109108001170000005</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>14418.87</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>14418.87</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>0</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>0</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>2</entry_id><account_code>1221010605</account_code><abstract>见采购付款</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>-541.4</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>-541.4</natural_credit_currency><auxiliary_accounting><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry><entry><entry_id>3</entry_id><account_code>100202</account_code><abstract>付国药控股广州有限公司贷款,付款申请单号:00109108001170000005</abstract><currency>CNY</currency><unit_price>0</unit_price><exchange_rate1>1</exchange_rate1><exchange_rate2>1</exchange_rate2><debit_quantity>0</debit_quantity><primary_debit_amount>0</primary_debit_amount><secondary_debit_amount>0</secondary_debit_amount><natural_debit_currency>0</natural_debit_currency><credit_quantity>0</credit_quantity><primary_credit_amount>14960.27</primary_credit_amount><secondary_credit_amount>0</secondary_credit_amount><natural_credit_currency>14960.27</natural_credit_currency><auxiliary_accounting><item name="现金流量项目">1121</item><item name="银行账户">44224701040008206</item><item name="单位分类">01</item><item name="客商辅助核算">1060000</item></auxiliary_accounting></entry></voucher_body></voucher></ufinterface>上传xml文件到NC接口的代码:
package com.accord.test;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.text.SimpleDateFormat;import java.util.Date;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.stream.StreamResult;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.io.DocumentSource;import org.jdom.input.SAXBuilder;public class TestXmlToNcBackXml{public static void main(String[] args) throws Exception {/*// 获取Servlet连接并设置请求的方法 String url = "http://10.10.1.29:80/service/XChangeServlet?account=ufsoft&receiver=1060325"; URL realURL = new URL(url); HttpURLConnection connection = (HttpURLConnection)realURL.openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Content-type", "text/xml"); connection.setRequestMethod("POST"); File file = new File("E:\\2.xml"); BufferedOutputStream out = new BufferedOutputStream(connection.getOutputStream()); BufferedInputStream input = new BufferedInputStream(new FileInputStream(file)); int length = 0; System.out.println("长度" + length); byte[] buffer = new byte[1000]; while ((length = input.read(buffer, 0, 1000)) != -1) { out.write(buffer, 0, length); } input.close(); out.close(); // 从连接的输入流中取得回执信息 *//***************从输入流取得Doc***************//* InputStream inputStream = connection.getInputStream(); InputStreamReader isr = new InputStreamReader(inputStream); BufferedReader bufreader = new BufferedReader(isr); String xmlString = ""; int c; System.out.println("==================Beging===================="); while ((c = bufreader.read()) != -1) { System.out.print((char) c); xmlString += (char) c; } input.close(); System.out.println("===================End======================"); System.out.println("內容:" + xmlString);*/ //String url = "http://10.10.1.29:80/service/XChangeServlet?account=ufsoft&receiver=1060325"; String url = "http://10.10.1.29:80/service/XChangeServlet?account=ufsoft&receiver=1060337"; URL realURL = new URL(url); HttpURLConnection connection = (HttpURLConnection)realURL.openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Content-type", "text/xml"); connection.setRequestMethod("POST"); File file = new File("E:\\3.xml"); BufferedOutputStream out = new BufferedOutputStream(connection.getOutputStream()); BufferedInputStream input = new BufferedInputStream(new FileInputStream(file)); int length; byte[] buffer = new byte[1000]; while ((length = input.read(buffer, 0, 1000)) != -1) { out.write(buffer, 0, length); } input.close(); out.close(); // 从连接的输入流中取得回执信息 /***************从输入流取得Doc***************/ InputStream inputStream = connection.getInputStream(); InputStreamReader isr = new InputStreamReader(inputStream); BufferedReader bufreader = new BufferedReader(isr); String xmlString = ""; int c; System.out.println("==================Beging===================="); while ((c = bufreader.read()) != -1) { System.out.print((char) c); xmlString += (char) c; } input.close(); System.out.println("===================End======================"); System.out.println("----" + xmlString); Document resDoc = DocumentHelper.parseText(xmlString); // 对回执结果的后续处理 /************document转化为xml*************/ TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DocumentSource source = new DocumentSource(resDoc); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //设置文档的换行与缩进 transformer.setOutputProperty(OutputKeys.INDENT, "YES"); //设置日期格式 SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMddHHmmss"); String resFile = "E:\\"+fmt.format(new Date())+".xml"; StreamResult result = new StreamResult(new File(resFile)); transformer.transform(source,result); System.out.println("======生成回执文件成功======="); /**************jdom解析XML*****************/ org.jdom.input.SAXBuilder saxReader = new SAXBuilder(); org.jdom.Document document1 = saxReader.build(new File(resFile)); org.jdom.Element root = document1.getRootElement(); //获取根元素,得到导入用友是否成功successful的值,值为Y:成功 N:失败 String resSuc = root.getAttributeValue("successful"); /*List<org.jdom.Element> list = root.getChildren(); for(org.jdom.Element e:list){ System.out.println("-------------------------"); System.out.println("filename---> "+e.getChildText("filename")); System.out.println("resultcode---> "+e.getChildText("resultcode")); System.out.println("resultdescription---> "+e.getChildText("resultdescription")); System.out.println("content--> "+e.getChildText("content")); System.out.println("--------------------------------------"); }*/ //后面对回执结果做判断,然后改变导入状态就行了if(null != resSuc){ if(resSuc.equals("N")){ System.out.println("导入失败"); }else if(resSuc.equals("Y")){ System.out.println("导入成功"); //接下来的代码,修改状态 }else{ System.out.println("出现未知错误"); }}else{ System.out.println("未找到successful属性");}}}返回回执xml代码:
<?xml version="1.0" encoding="UTF-8"?><ufinterface billtype="gl" filename="e:\1.xml" isexchange="Y" proc="add" receiver="1060337@1060337-003" replace="Y" roottag="sendresult" sender="01" successful="Y"> <sendresult> <billpk> </billpk> <bdocid>w764</bdocid> <filename>e:\1.xml</filename> <resultcode>1</resultcode> <resultdescription>单据w764开始处理...单据w764处理完毕!</resultdescription> <content>2017.09-记账凭证-1</content> </sendresult> <sendresult> <billpk> </billpk> <bdocid>w1007</bdocid> <filename>e:\1.xml</filename> <resultcode>1</resultcode> <resultdescription>单据w1007开始处理...单据w1007处理完毕!</resultdescription> <content>2017.10-记账凭证-1</content> </sendresult> <sendresult> <billpk> </billpk> <bdocid>w516</bdocid> <filename>e:\1.xml</filename> <resultcode>1</resultcode> <resultdescription>单据w516开始处理...单据w516处理完毕!</resultdescription> <content>2017.07-记账凭证-50</content> </sendresult></ufinterface>注:用到的jar包:dom4j.jar和jdom-1.1.3.jar和ojdbc14.jar
阅读全文
1 0
- 从数据库得到数据导出指定格式的xml文件,上传到NC接口,返回回执到本地一个xml文件
- 从数据库得到数据导出指定格式的xml文件,上传到NC接口,返回回执到本地一个xml文件(接上篇补充)
- .net从将数据库中的数据导出到Excel格式的xml
- 将DataTable中的数据以Xml格式写到指定的文件内,并读取
- 导出数据到xml文件中
- DataSet数据集导出到Xml文件
- 使用存储过程将数据以XML格式导出到XML文件
- android xml文件到本地
- 从数据库导出xml文件
- Oracle导出到XML文件
- 将数据库中表的数据保存到XML文件中
- 关于读取Excel文件数据到数据库,以及从数据库导出数据到Excel的例子
- 导出xml格式的文件
- Sql 数据导出到XMl 与 从XML导入到数据库
- 从EXCEL导出数据到XML
- Android SQLite 开发教程(5): 导出数据库到XML 文件
- [.Net码农]将文件上传到数据库 和 从数据库下载文件到本地
- 将文件上传到数据库 和 从数据库下载文件到本地
- Java的Json解析包FastJson使用
- CSS中定义变量,并使用变量设置属性值
- Python模块_PyLibTiff读取tif文件
- Object Detection论文笔记(4)
- 顺序堆栈(数组)
- 从数据库得到数据导出指定格式的xml文件,上传到NC接口,返回回执到本地一个xml文件
- 栈的压入、弹出序列
- Inno Setup入门(五)——添加readme文件
- JAVA_int类型数据精度高于float低于double
- 下面总结 8 组常用的Eclipse快捷键
- Java发送邮件的简单实现
- kickstart无人值守安装
- Java快速排序
- Java设计模式-工厂模式