|
由于工作需要把xml文件转换成.dao的文本文件,所以自己摸索着写了这个程序.
xml格式如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DAO SYSTEM "daoCheck.dtd">
<DAO>
<VERSION>2.0</VERSION>
<PROJECT>设备管理系统</PROJECT>
<TABLE>DB.TBMEMBB</TABLE>
<CLASS>memcbb</CLASS>
<PACKAGE>com.icsc.me.mem.dao</PACKAGE>
<ENTITY>memcbb</ENTITY>
<AUTHOR>mynameshb(***)</AUTHOR>
<DESCRIPT>设备资料(TBMEMBB)</DESCRIPT>
<LINE NUM="1">
<ROW1>
<NAME>membbid</NAME>
<DATATYPE>String</DATATYPE>
<ISKEY>Y</ISKEY>
<DECRIPTION>系统索引值</DECRIPTION>
<SIZE>32</SIZE>
<FORMAT>String</FORMAT>
<DEFVALUE>""</DEFVALUE>
<LIST>N</LIST>
<INS>N</INS>
<UPD>N</UPD>
<TYPE>text</TYPE>
<PARA1></PARA1>
<PARA2></PARA2>
<PARA3></PARA3>
</ROW1>
</DAO>
文本格式如下:
#Meta
------------------------------------------------------------
version : 2.0
project : 设备管理系统
table : DB.TBMEMBB
class : memcbb
package : com.icsc.me.mem.dao
entity : memcbb
author : mynameshb(***)
descript : 设备资料(TBMEMBB)
#Field
#name dataType Key[y/n] description DBsize format default list[y/n] ins[y/n] upd[y/n] type
--------------------------------------------------------------------------------
membbid String Y 系统索引值 32 String "" N N N text
转换代码如下:
在java文件中使用如下代码来进行转换动作.
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = null ;
try
{
String xslFile = "这里输入xslt文件路径,包括文件名";
String xmlFile = "这里输入xml文件路径,包括文件名";
String daoFile = "这里输入dao文件路径,包括文件名";
transformer = factory.newTransformer(new StreamSource(new File(xslFile)));
transformer.setOutputProperty(OutputKeys.METHOD,"text"); //设定转换为text
transformer.setOutputProperty(OutputKeys.ENCODING,"gb2312"); //转换文件格式为gb2312
transformer.setOutputProperty(OutputKeys.INDENT,"yes"); //设定格式有缩进
transformer.transform(new StreamSource(new File(xmlFile)),new StreamResult(new File(daoFile)));
}
catch (TransformerConfigurationException e1)
{
e1.printStackTrace();
}
catch (TransformerException e1)
{
e1.printStackTrace();
}
xlst文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<?altova_samplexml C:\codeAutoGenGUI\xslt\daoCheck.xslt?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="text" indent="no"/>
<xsl:template match="/">#Meta
------------------------------------------------------------
version : <xsl:value-of select="/DAO/VERSION"/>
project : <xsl:value-of select="/DAO/PROJECT"/>
table : <xsl:value-of select="/DAO/TABLE"/>
class : <xsl:value-of select="/DAO/CLASS"/>
package : <xsl:value-of select="/DAO/PACKAGE"/>
entity : <xsl:value-of select="/DAO/ENTITY"/>
author : <xsl:value-of select="/DAO/AUTHOR"/>
descript : <xsl:value-of select="/DAO/DESCRIPT"/>
#Field
#name dataType Key[y/n] description DBsize format default list[y/n] ins[y/n] upd[y/n] type
--------------------------------------------------------------------------------
<xsl:for-each select="DAO/LINE/*">
<xsl:value-of select="NAME"/>
<xsl:text> </xsl:text>
<xsl:value-of select="DATATYPE"/>
<xsl:text> </xsl:text>
<xsl:value-of select="ISKEY"/>
<xsl:text> </xsl:text>
<xsl:value-of select="DECRIPTION"/>
<xsl:text> </xsl:text>
<xsl:value-of select="SIZE"/>
<xsl:text> </xsl:text>
<xsl:value-of select="FORMAT"/>
<xsl:text> </xsl:text>
<xsl:value-of select="DEFVALUE"/>
<xsl:text> </xsl:text>
<xsl:value-of select="LIST"/>
<xsl:text> </xsl:text>
<xsl:value-of select="INS"/>
<xsl:text> </xsl:text>
<xsl:value-of select="UPD"/>
<xsl:text> </xsl:text>
<xsl:value-of select="TYPE"/>
<xsl:text> </xsl:text>
<xsl:value-of select="PARA1"/>
<xsl:text> </xsl:text>
<xsl:value-of select="PARA2"/>
<xsl:text> </xsl:text>
<xsl:value-of select="PARA3"/>
<xsl:text> </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
这是本人在对xml转换成.dao文件时用到的方法,如果有疑问,请回贴. |
|