01.dom4j 创建xml文档
来源:互联网 发布:51单片机自学笔记视频 编辑:程序博客网 时间:2024/06/06 04:02
这里面开始没搞懂的就是xml的头部信息,不知道怎么弄(请看Service)
2.service
/** * 导出xml报文文件内容. * @param flag -- 默认是2,执行总账类方法 * @param sysdto -- 账套 * @param hsagency -- 单位 * @return * @throws AppException -- 自定义异常 */ public String exportVchXml(String flag, NewFmAccountSystemTypeDTO sysdto, String hsagency,String startterm, String endterm, HttpServletResponse response) throws AppException { //System.out.println(doc.asXML().replaceAll("\n", "")); String filepath = ""; if ("1".equals(flag)) { // 导出公共档案 filepath = exportBaseDataXml(sysdto, hsagency, response); } else if ("2".equals(flag)) { // 导出总账类 filepath = exportSumVchXml(sysdto, hsagency,startterm,endterm, response); } else { throw new AppException("导出文件类型有误,请检查!"); } return filepath; } /** * 导出总账凭证类xml文件. * @param sysdto -- 账套 * @param hsagency -- 单位 * @return * @throws AppException */ public String exportSumVchXml(NewFmAccountSystemTypeDTO sysdto, String hsagency, String startterm, String endterm, HttpServletResponse response) throws AppException { String tempfilename = "总账类"; String acctsystype = sysdto.getAcctsystypeid()+""; //账套id //期间查询条件待定 String termfilter = " ((term between " + startterm + " and " + endterm + ") or term = 0)"; int startterm1 = Integer.parseInt(startterm); int endterm1 = Integer.parseInt(endterm); //报文头信息 Document document = DocumentHelper.createDocument(); //根节点 Element rootElmt = document.addElement("总账","http://sxbw.audit.gov.cn/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema"); //命名空间 //xmlns:行政事业单位="http://sxbw.audit.gov.cn/xxxxXMLSchema" //xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" rootElmt.addNamespace("行政事业单位", "http://sxbw.audit.gov.cn/xxxx/XMLSchema"); rootElmt.addNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); //xsi:schemaLocation="http://sxbw.audit.gov.cn/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema 总账.xsd" rootElmt.addAttribute("xsi:schemaLocation", "http://sxbw.audit.gov.cn/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema 总账.xsd"); /***总账基础信息**/ Element accttypeElement = rootElmt.addElement("总账基础信息"); accttypeElement.addElement("结构分隔符").setText("-"); accttypeElement.addElement("会计科目编号规则").setText(sysdto.getCodeformat()); accttypeElement.addElement("凭证头可扩展字段结构").setData(null); accttypeElement.addElement("凭证头可扩展结构对应档案").setData(null); accttypeElement.addElement("分录行可扩展字段结构").setData(null); accttypeElement.addElement("分录行可扩展字段对应档案").setData(null); /**报表集*/ Element reportElement = rootElmt.addElement("报表集"); reportElement.addElement("报表编号"); reportElement.addElement("报表名称"); reportElement.addElement("报表报告日"); reportElement.addElement("报表报告期"); reportElement.addElement("编制单位"); reportElement.addElement("货币单位"); /**报表项数据*/ Element reportItemElement = rootElmt.addElement("报表项数据"); reportItemElement.addElement("报表编号"); reportItemElement.addElement("报表项编号"); reportItemElement.addElement("报表项名称"); reportItemElement.addElement("报表项公式"); reportItemElement.addElement("报表项数值"); String filepath = ExpXmlUtil.expExcelTemplate(null, tempfilename,document, response); return filepath; }
3.DAO略
4.ExpxmlUtil
/** * */package gov.mof.fasp.ifmis.acal.common.expxml;import gov.mof.framework.util.DateUtil;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.math.BigDecimal;import java.text.DecimalFormat;import javax.servlet.http.HttpServletResponse;import org.dom4j.Document;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;/** *一个将xml文件保存到服务器 *一个将xml以字符串格式输出到客户端 */public class ExpXmlUtil { /** * 构造方法设置为私有. */ private ExpXmlUtil() { super(); } /** * @param path -- * @param tmpname * @param columns * @param dataList * @return */ public static String expExcelTemplate(String path, String tmpname,Document document, HttpServletResponse response) { if (tmpname == null) { tmpname = ""; } if (path == null || "".equals(path)) { path = new File("").getAbsolutePath(); path = path.replaceAll("\\\\", "/"); } path += "/cal/impexp/expfilebak/"; File f = new File(path); f.mkdirs(); String filename = tmpname + ".xml"; path += filename; // 封装xml报文数据 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("utf-8");// 设置XML文件的编码格式 format.setNewLineAfterDeclaration(false);//声明之后不换行 //format.setSuppressDeclaration(true);// 不输出头信息 format.setIndent(false); //设置是否缩进 //format.setIndent(" "); //以空格方式实现缩进 format.setNewlines(true); //设置是否换行 XMLWriter writer = null; try { writer = new XMLWriter(new FileWriter(path), format);//写入指定的文件 writer.write(document); } catch (IOException e) { path=""; e.printStackTrace(); } finally { try { writer.close(); } catch (IOException e) { e.printStackTrace(); } } return path; /*ByteArrayOutputStream baos = new ByteArrayOutputStream(); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); format.setNewLineAfterDeclaration(false);//声明之后不换行 format.setNewlines(true); //设置是否换行 XMLWriter writer; try { writer = new XMLWriter(baos, format); writer.write(document); writer.flush(); writer.close(); String fileName = tmpname + DateUtil.getCurrentDateStr(DateUtil.C_DATA_PATTON_YYYYMMDD) + ".xml"; String dispositionHeader = "attachment;filename=" + new String(fileName.getBytes(), "iso8859-1"); // 发送中文文件名的响应头信息 response.setHeader("Content-Disposition", dispositionHeader); response.setHeader("Content-Type", "application/x-msdownload; charset=gbk"); OutputStream out = response.getOutputStream(); out.write(baos.toByteArray()); out.flush(); out.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null;*/ } /** * 格式化金额. * @param amt --金额 * @return */ public static String numFormat(String amt) { DecimalFormat df = new DecimalFormat("#0.00"); BigDecimal amtbd = new BigDecimal(amt); return df.format(amtbd); }}
导出部分xml格式
<?xml version="1.0" encoding="utf-8"?><总账 xmlns="http://sxbw.audit.gov.cn/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema" xmlns:行政事业单位="http://sxbw.audit.gov.cn/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sxbw.audit.gov.cn/AccountingSoftwareDataInterfaceStandard/2010/PSGA/XMLSchema 总账.xsd"><总账基础信息><结构分隔符>-</结构分隔符><会计科目编号规则>4-2-2-2-2</会计科目编号规则><凭证头可扩展字段结构/><凭证头可扩展结构对应档案/><分录行可扩展字段结构/><分录行可扩展字段对应档案/></总账基础信息><记账凭证类型><记账凭证类型编号>01</记账凭证类型编号><记账凭证类型名称>记账凭证</记账凭证类型名称><记账凭证类型简称>记</记账凭证类型简称></记账凭证类型><会计科目><科目编号>1001</科目编号><科目名称>库存现金</科目名称><科目级次>1</科目级次><科目类型>资产</科目类型><余额方向>借</余额方向></会计科目>
阅读全文
0 0
- 01.dom4j 创建xml文档
- DOM4J创建XML文档
- DOM4J创建XML文档
- DOM4J创建XML文档
- DOM4J创建XML文档
- dom4J创建xml文档
- 使用DOM4J创建XML文档
- 利用Dom4j创建xml文档
- Java创建xml文档笔记(DOM,DOM4J)
- Dom4j解析和创建XML文档
- Dom4j解析和创建XML文档
- JAVA 基于dom4j创建XML文档
- 用dom4j中的解析器创建XML文档
- 使用dom4j框架,创建xml文档并输出保存
- DOM4J生成XML文档
- Dom4j解析XML文档
- dom4j解析xml文档
- DOM4J解析XML文档
- Parser用户手册
- Eclipse用SVN给项目打基线做版本维护
- Tian Ji -- The Horse Racing(贪心)
- tcp/ip协议栈--tcp数据发送流程
- 关于Spring 缓存的坑
- 01.dom4j 创建xml文档
- windows下安装redis以及在xmapp下给php安装redis扩展库
- 适应浏览器自带断点下载
- ADMEMS方法体系理解
- 在win10环境下用u盘安装ubuntu16.04双系统
- Android Studio如何把项目上传到GitHub
- Mohican_9/26 寻址方式
- session实现购物车操作
- Hbase Endpoint Coprocessor