使用jaxb-xjc的xjc和schemagen
jaxb 网站
https://jaxb.java.net/
直接下载最新版本的
jaxb
解压包后,可以在bin目录下找到xjc的bat文件。
根据需要进行修改和使用。
XFC的使用来自
http://blog.csdn.net/darxin/article/details/4
一. xjc使用帮助 1. 通过命令行编译
-xmlschema 指定编译文件的格式为Schema格式,此参数是默认值,可以不用提供。 例如编译当前目录下的schema.xls文件,java文件保存在src目录,包名为generate,其命令如下:
xjc –dtd –d src –p generate schema.dtd
-----------------------------------
xsd中有指定namespace时,-p 选择无效,执行xjc会产生conflict,而中断。
-----------------------------------
二. 序列化(Marshalling)与反序列化(Unmarshalling)要想在Java程序中使用JAXB,必须用到以下几个jar包:
以上包均在/JAXB-HOME/lib目录中可以找到。 【jdk1.7 貌似已经包含了这些包】 JAXB的核心类是JAXBContext类,该类可以根据一个包名或一个类名加载Java Objects。 使用包名加载Java Objects的样例如:
其指定的包中必须包含ObjectFactory类,该类由xjc生成,用于生成XML数据所对应的Java Objects。
其指定的类必须是用于生成Java Objects的工厂类,如ObjectFactory类。
package generated; import java.io.InputStream; import java.io.OutputStream; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; public class JAXBUtils { private JAXBUtils() { throw new UnsupportedOperationException(); } public static Object unmarshal(String contextPath,InputStream xmlStream) throws JAXBException { JAXBContext jc = JAXBContext.newInstance(contextPath); Unmarshaller u = jc.createUnmarshaller(); return u.unmarshal(xmlStream); } public static void marshal(String contextPath,Object obj,OutputStream stream) throws JAXBException { JAXBContext jc = JAXBContext.newInstance(contextPath); Marshaller m = jc.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true); m.setProperty(Marshaller.JAXB_ENCODING,"UTF-8"); m.marshal(obj,stream); } } 使用该工具类
public class JaxbTest { public static void main(String[] args) throws FileNotFoundException,JAXBException { // unmarshal InputStream is = new FileInputStream("C:/test.xml"); Object obj = JAXBUtils.unmarshal("generate",is); System.out.println(v.getUserid()); // marshal OutputStream f = new FileOutputStream("C:/Test1.xml"); JAXBUtils.marshal("generate",obj,f); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |