如何用JAVA生成XML的同時生成XSD

问题描述

我這用JAVA生成了XML,但項目要求同時生成XSD,不知如何解決,這請教各位.貼出生成XML的代碼.packagecn.com.yyhj.ycweb.ebox.sis_test;importjava.io.FileWriter;importjava.io.IOException;importjava.sql.*;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Locale;importorg.apache.log4j.*;importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.io.OutputFormat;importorg.dom4j.io.XMLWriter;importcn.com.yyhj.ycweb.ebox.util.DatabaseUtil;importcn.com.yyhj.ycweb.ebox.util.IoUtil;importcn.com.yyhj.ycweb.ebox.util.MailUtil;publicclassSender{privatestaticLoggerlogger=Logger.getLogger(Sender.class);privateParameterp=null;privateConnectionconn=null;privateStringBuffermailMsg=null;privateStringmaterShipmentcode,contShiptCode,codeshipment;privatestaticSimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyyHH:mm:ss");privatestaticSimpleDateFormatsdf1=newSimpleDateFormat("yyyyMMddHHmmss");privatestaticSimpleDateFormatsdf2=newSimpleDateFormat("dd-MMM-yyyyHH:mm:ss",Locale.GERMAN);privatestaticSimpleDateFormatsdf3=newSimpleDateFormat("yyyyMMdd");privatestaticSimpleDateFormatsdf4=newSimpleDateFormat("dd-MMM-yyyy",Locale.GERMAN);publicstaticvoidmain(String[]args){logger.info("Start...");if(args.length>0){Sendersender=newSender(args[0]);}else{logger.error("Havenotsettheparameterfileforapp.");System.exit(1);}}/***構造方法**@paramfile*String*/publicSender(Stringfile){try{this.p=newParameter(file);java.util.Datedate=newjava.util.Date();StringOutDate=p.sdf1.format(date);conn=DatabaseUtil.createConnection(p.JDBCDriver,p.dbUrl,p.dbUser,p.dbPassword);if(this.getData(OutDate,conn)==1){logger.info("Success!");}}catch(Exceptionex){logger.error("Failed!",ex);}finally{logger.info("End!");try{if(conn!=null){conn.close();}}catch(SQLExceptione){logger.error("ClosingConnectionFailed!",e);}}}/***獲取發送的資料**@returnintifreturn0,thenhasnotdata;ifreturn1,thenhasdata;*ifreturn-1,thenoccurserror*/privateintgetData(StringeboxOutDate,Connectionconn)throwsSQLException{Statementstmt1=null;Statementstmt2=null;ResultSetheader_rs=null;ResultSetmatship_rs=null;try{stmt1=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);stmt2=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);Stringsql_header=p.sql_header;Stringsql_matship=p.sql_matship;//logger.debug("sql:"+sql_header);header_rs=stmt1.executeQuery(sql_header);matship_rs=stmt2.executeQuery(sql_matship);if(header_rs.next()){header_rs.beforeFirst();//createXmlFile(p.xml,header_rs,matship_rs,"BIG5");if(createXmlFile(p.xml,header_rs,matship_rs,"BIG5")==1){sendMail(p.smtpHost,p.smtpPort,p.from,p.to,p.dataMailSubject,p.xml,null,"big5");}else{return0;}return1;}else{logger.info("沒有需要轉出的資料");return0;}}catch(Exceptione){logger.error("創建資料發生錯誤!",e);return-1;}finally{IoUtil.deleteFile(p.xml);if(header_rs!=null){header_rs.close();}if(matship_rs!=null){matship_rs.close();}if(stmt1!=null){stmt1.close();}if(stmt2!=null){stmt2.close();}}}/***@returnboolean*@paramsmtpHost*郵件服務器地址*@paramsmtpPort*傳送端口*@paramfrom*郵件發送方地址*@paramto*郵件接收方地址*@paramsubject*郵件主旨*@paramattachment*郵件附檔*@paramcontent*郵件內容*@paramencode*郵件編碼方式*/publicstaticbooleansendMail(StringsmtpHost,intsmtpPort,Stringfrom,Stringto,Stringsubject,Stringattachment,Stringcontent,Stringencode){booleant=false;try{MailUtilmail=newMailUtil(smtpHost,smtpPort);mail.setFrom(from);//郵件發送方地址mail.setTo(to);//郵件接收方地址mail.setSubject(subject);//郵件主旨mail.setEncode(encode);//郵件編碼方式mail.setAttachment(attachment);//郵件附檔mail.setContent(content);//郵件內容mail.sendMimeMail();//發送郵件logger.info("郵件發送成功!");t=true;}catch(Exceptione){logger.error("郵件發送失敗!",e);}returnt;}/***根據傳入的數據記錄在當前目錄下集創建一個XML文件。**@paramfileName*要創建的XML文件名*@paramrs*傳入的數據記錄集*@paramencode*XML文件要使用的編碼*@throwsParseException*@throwsSQLException*@throwsParseException*/publicintcreateXmlFile(StringfileName,ResultSetheader_rs,ResultSetmatship_rs,Stringencode){try{StringsenderValue,receiverValue;Documentdocument=DocumentHelper.createDocument();ElementtableElement=document.addElement("XML");ElementrowElement1=tableElement.addElement("Header");ElementrowElement2=tableElement.addElement("MasterShipment");ResultSetMetaDataheader_rsmd=header_rs.getMetaData();intheader_columnCount=header_rsmd.getColumnCount();if(!header_rs.next())thrownewRuntimeException("Theheader_rsargumenthavenotanyrecord.");//header_rs.beforeFirst();for(inti=1;i<=header_columnCount;i++){if(i==6){rowElement1.addElement(header_rsmd.getColumnName(i)).addText(header_rs.getString(i)==null?"":sdf2.format((Date)sdf1.parse(header_rs.getString(i))));}else{rowElement1.addElement(header_rsmd.getColumnName(i)).addText(header_rs.getString(i)==null?"":header_rs.getString(i));}}if(!matship_rs.next())thrownewRuntimeException("Thersargumenthavenotanyrecord.");ResultSetMetaDatamatship_rsmd=matship_rs.getMetaData();intmatship_columncount=matship_rsmd.getColumnCount();for(intj=1;j<=matship_columncount;j++){if(j==1){materShipmentcode=matship_rs.getString(j);rowElement2.addElement(matship_rsmd.getColumnName(j)).addText(matship_rs.getString(j)==null?"":matship_rs.getString(j));}elseif(j==3){senderValue=matship_rs.getString(j);ElementsenderName=rowElement2.addElement(matship_rsmd.getColumnName(j));if(CreateAddressNode(senderName,senderValue)==1){logger.info("創建address子節點成功!");}else{logger.info("創建address子節點失敗!");return0;}}elseif(j==4){receiverValue=matship_rs.getString(j);ElementreceiverName=rowElement2.addElement(matship_rsmd.getColumnName(j));if(CreateAddressNode(receiverName,receiverValue)==1){logger.info("創建address子節點成功!");}else{logger.info("創建address子節點失敗!");return0;}}elseif(j==8||j==16||j==18){if(matship_rs.getString(j)==null||(matship_rs.getString(j)).equals("")){rowElement2.addElement(matship_rsmd.getColumnName(j)).addText("");}else{rowElement2.addElement(matship_rsmd.getColumnName(j)).addText(sdf4.format(sdf3.parse(matship_rs.getString(j))));}}else{rowElement2.addElement(matship_rsmd.getColumnName(j)).addText(matship_rs.getString(j)==null?"":matship_rs.getString(j));}}OutputFormatformat=OutputFormat.createPrettyPrint();format.setEncoding(encode);format.setTrimText(false);XMLWriterwriter=newXMLWriter(newFileWriter(fileName),format);writer.write(document);writer.close();return1;}catch(Exceptionex){logger.error("創建節點出錯!",ex);return0;}}}

解决方案

解决方案二:
哥们你的代码太长了告诉你个类JAXB,你用它来做jdk6里边有或者去下JAR
解决方案三:
謝謝!一樓的.但我看了下這個類,很多都是通過XSD生成XML,而不是生成XML是自動生成XSD.

时间: 2024-09-30 08:21:39

如何用JAVA生成XML的同時生成XSD的相关文章

关于mybatis generator的生成XML的问题,生成的XML是否和驱动jar有关系~

问题描述 关于mybatis generator的生成XML的问题,生成的XML是否和驱动jar有关系~ 关于mybatis generator的生成XML的问题,生成的XML是否和驱动jar有关系~ 我发现我用sqlserver 生成的 比 mysql 的 方法更多,mysql只生成了 inser以及insertSelective和BaseResultMap. 解决方案 和主键有关,与驱动无关

如何用Java操作XML文件

问题描述 毕业设计,要开发一个图书馆文献采购软件.现在把书目写入了XML文件,如下:<books><book><ISBN>978-7-03-020860-6</ISBN><三目号>00028090041</三目号><题名>概率论与数理统计教程</题名><第一责任说明>李子强</第一责任说明><出版社>科学出版社</出版社><出版地>北京</出版地

如何用Java对XML文件进行Schema校验,Schema文件用的是微软格式

问题描述 schema文件采用的是微软格式,非W3标准格式<Schemaname="po-schema"xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:schemas-microsoft-com:datatypes"> 解决方案 解决方案二:<appxmlns="x-schema:schemaName.xml">解决方案三:引用1楼just

用Java实现可保存状态的数据库生成XML树,源码来了(11)

xml|生成xml|数据|数据库 3. XMLTreeXSL.javapackage com.sitechasia; import javax.servlet.*;import javax.servlet.http.*; import java.io.PrintWriter;import java.io.IOException; public class XMLTreeXSL extends HttpServlet {    PrintWriter out;    boolean flag=tr

用Java实现可保存状态的数据库生成XML树(2)

xml|生成xml|数据|数据库 4.3.构造生成XML的servlet这一步的主要实现是从数据表中提取符合要求的记录生成嵌套的XML,servlet的源码是XMLServlet.java,选用oracle作数据库服务器.对数据库记录处理的过程基本上类似于XSL模版的处理:先查找layer的值为0的记录,对该记录进行分析,分析是否具有下级节点,这是通过该记录的href是否为空来进行分支处理的,href为空时,通过id的输入参数进行递归查找,请参见XMLServlet.java源码. /*RowS

用Java实现可保存状态的数据库生成XML树(1)-基于weblogic,包括一些基础问题,非常详细的。

web|xml|生成xml|数据|数据库|问题 用Java实现可保存状态的数据库生成XML树目录  0.    关键字词注释    11.    目的    12.    设计思想    13.    实现概要    14.    实现步骤    24.1.XML文档结构定义    24.2.数据表的结构定义    44.3.构造生成XML的servlet    44.4.构造显示树型结构的XSL模版    84.5.构造生成点击树型XMl显示详细节点内容的Servlet    124.6.Se

用Java生成XML

xml|生成xml 一般情况下,我们只要一提到XML,大多数问题都会集中到解析 XML和 XML结构等方面.在这类技术领域,W3C提出了 DOM 和 SAX规范用来解析数据,Sun提供了Java XML Pack,而 Apache则推出了Xerces 和Xalan.然而,几乎没有什么关注的目光投射到输出XML这一问题上来.把JavaBeans和Swing组件变成 XML的项目倒有一些,但大多数情况下,开发人员只不过希望能用定制的格式输出数据结构,这个任务其实不难. 本文特别探讨了通过Java创建

Java使用DSA密钥对生成XML签名的方法_java

本文实例讲述了Java使用DSA密钥对生成XML签名的方法.分享给大家供大家参考.具体实现方法如下: MainClass.java代码如下: 复制代码 代码如下: import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.SecureRandom; import java.util.Collections; import javax.xml.crypto.dsig.Canon

jar-如何用java生成pdf文件

问题描述 如何用java生成pdf文件 就是写一个方法,把一个html文件打印成pdf文件,我按照网上的试了,用了itext,结果不能显示中文,求大神帮忙,最好给出相应的jar包 解决方案 参考:http://www.jb51.net/article/36626.htm 解决方案二: http://bbs.csdn.net/topics/390670679 解决方案三: 最近刚学到ssh输出excel,用到了POI,你可以可以试一下,我还没做出来,没法给demo了,记住关键词POI,自己搜吧 解