根据xml生成xsd,再根据xsd生成对应javabean

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hekaihaw/article/details/82957299

Jaxb
JAXB官网:http://jaxb.java.net/
API链接 :http://jaxb.java.net/nonav/2.2.5/docs/api/
文档    :http://jaxb.java.net/tutorial/

1、利用trang.jar将Xml 转换成xsd

Trang 是一种命令行的可以XML生成XSD的工具,生成XML文件对应的XSD文件只需要3个简单的步骤:
第一步  下载Trang
http://www.thaiopensource.com/relaxng/trang.html 上下载trang-version.zip

第二步 解压zip
将trang-version.zip解压到某个目录,比如d:\trang
第三步  生成XSD
假设在 d:\trang 下有一个xml文件 test.xml

<?xml version="1.0" encoding="UTF-8"standalone="yes"?>
<AP>
 <MSG_CODE>test</MSG_CODE>
 <MSG_TEXT>test</MSG_TEXT>
 <TRANS_NO>test</TRANS_NO>
  <RESULT_LIST>
    <RESULT>
      <TRD_DATE>test</TRD_DATE>
     <APP_TIMESTAMP>test</APP_TIMESTAMP>
      <APP_SNO>test</APP_SNO>
      <CUST_CODE>test</CUST_CODE>
      <CUST_NAME>test</CUST_NAME>
      <CUACCT_CODE>test</CUACCT_CODE>
      <TA_CODE>test</TA_CODE>
      <TA_ACCT>test</TA_ACCT>
      <TRANS_ACCT>test</TRANS_ACCT>
      <MBR_CODE>test</MBR_CODE>
      <ORI_APP_SNO>test</ORI_APP_SNO>
      <ISS_CODE>test</ISS_CODE>
      <INST_CODE>test</INST_CODE>
      <INST_ID>test</INST_ID>
      <INST_SNAME>test</INST_SNAME>
      <INST_TYPE>test</INST_TYPE>
      <INST_CLS>test</INST_CLS>
      <TRD_ID>test</TRD_ID>
      <CANCEL_FLAG>test</CANCEL_FLAG>
      <TRD_QTY>test</TRD_QTY>
    </RESULT>
    <RESULT>
      <TRD_DATE>test</TRD_DATE>
     <APP_TIMESTAMP>test</APP_TIMESTAMP>
      <APP_SNO>test</APP_SNO>
      <CUST_CODE>test</CUST_CODE>
      <CUST_NAME>test</CUST_NAME>
      <CUACCT_CODE>test</CUACCT_CODE>
      <TA_CODE>test</TA_CODE>
      <TA_ACCT>test</TA_ACCT>
      <TRANS_ACCT>test</TRANS_ACCT>
      <MBR_CODE>test</MBR_CODE>
      <ORI_APP_SNO>test</ORI_APP_SNO>
      <ISS_CODE>test</ISS_CODE>
      <INST_CODE>test</INST_CODE>
      <INST_ID>test</INST_ID>
      <INST_SNAME>test</INST_SNAME>
      <INST_TYPE>test</INST_TYPE>
      <INST_CLS>test</INST_CLS>
      <TRD_ID>test</TRD_ID>
      <CANCEL_FLAG>test</CANCEL_FLAG>
      <TRD_QTY>test</TRD_QTY>
    </RESULT>
  </RESULT_LIST>
</AP>

打开windows命令行,将当前位置变更到 d:\trang
输入
java -jar trang.jar test.xml test.xsd
 (trang.jar 接受两个参数,第一个为源文件,第二个为目标文件)
ok!你可以看到在 d:\trang 下就生成了 test.xsd 文件

<?xmlversion="1.0" encoding="UTF-8"?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"elementFormDefault="qualified">
  <xs:element name="AP">
    <xs:complexType>
      <xs:sequence>
        <xs:elementref="MSG_CODE"/>
        <xs:elementref="MSG_TEXT"/>
        <xs:elementref="TRANS_NO"/>
        <xs:elementref="RESULT_LIST"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="MSG_CODE"type="xs:NCName"/>
  <xs:element name="MSG_TEXT"type="xs:NCName"/>
  <xs:element name="TRANS_NO"type="xs:NCName"/>
  <xs:elementname="RESULT_LIST">
    <xs:complexType>
      <xs:sequence>
        <xs:elementmaxOccurs="unbounded" ref="RESULT"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="RESULT">
    <xs:complexType>
      <xs:sequence>
        <xs:elementref="TRD_DATE"/>
        <xs:elementref="APP_TIMESTAMP"/>
        <xs:elementref="APP_SNO"/>
        <xs:elementref="CUST_CODE"/>
        <xs:elementref="CUST_NAME"/>
        <xs:elementref="CUACCT_CODE"/>
        <xs:elementref="TA_CODE"/>
        <xs:elementref="TA_ACCT"/>
        <xs:element ref="TRANS_ACCT"/>
        <xs:elementref="MBR_CODE"/>
        <xs:elementref="ORI_APP_SNO"/>
        <xs:elementref="ISS_CODE"/>
        <xs:elementref="INST_CODE"/>
        <xs:elementref="INST_ID"/>
        <xs:elementref="INST_SNAME"/>
        <xs:element ref="INST_TYPE"/>
        <xs:elementref="INST_CLS"/>
        <xs:elementref="CANCEL_FLAG"/>
        <xs:elementref="TRD_QTY"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="TRD_DATE"type="xs:NCName"/>
  <xs:element name="APP_TIMESTAMP"type="xs:NCName"/>
  <xs:element name="APP_SNO"type="xs:NCName"/>
  <xs:element name="CUST_CODE"type="xs:NCName"/>
  <xs:element name="CUST_NAME"type="xs:NCName"/>
  <xs:element name="CUACCT_CODE"type="xs:NCName"/>
  <xs:element name="TA_CODE"type="xs:NCName"/>
  <xs:element name="TA_ACCT"type="xs:NCName"/>
  <xs:element name="TRANS_ACCT"type="xs:NCName"/>
  <xs:element name="MBR_CODE"type="xs:NCName"/>
  <xs:element name="ORI_APP_SNO"type="xs:NCName"/>
  <xs:element name="ISS_CODE"type="xs:NCName"/>
  <xs:element name="INST_CODE"type="xs:NCName"/>
  <xs:element name="INST_ID"type="xs:NCName"/>
  <xs:element name="INST_SNAME"type="xs:NCName"/>
  <xs:element name="INST_TYPE"type="xs:NCName"/>
  <xs:element name="INST_CLS"type="xs:NCName"/>
  <xs:element name="TRD_ID"type="xs:NCName"/>
  <xs:element name="CANCEL_FLAG"type="xs:NCName"/>
  <xs:element name="TRD_QTY"type="xs:NCName"/>
</xs:schema>

这里的xs:NCName可以改为xs:string这样生成的bean属性就是String类型的。

2、利用网络在线工具将xml转成xsd和dtd

生成xsd网址:http://www.freeformatter.com/xsd-generator.html#ad-output
生成DTD,通过一个java小工具:http://sourceforge.net/projects/xml2dtd/

3、Jaxb将xsd转成Bean

进入到你的xsd的文件夹下,在cmd模式下执行
xjc -p com.ebupt a.xsd -d abc
说明下:
xjc -p 包的路径 xsd的名字.xsd -d 目标的文件夹

猜你喜欢

转载自blog.csdn.net/hekaihaw/article/details/82957299