Java与XML的故事一:通过XSD生成Java类
来源:互联网 发布:mac上如何复制粘贴 编辑:程序博客网 时间:2024/06/04 19:18
JAXB让Java与XML之间繁琐的机械编码成为过去,现在可以简单的通过XSD文件生成对应的Java文件,我一般使用maven-jaxb2-plugin来实现xsd到java文件的生成。
POM配置
指定xsd文件路径,制定binding文件路径,指定生成java文件路径
<plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.9.0</version> <executions> <execution> <id>schema1-generate</id> <goals> <goal>generate</goal> </goals> <configuration> <schemaDirectory>src/main/resources/dir1</schemaDirectory> <schemaIncludes> <include>1.xsd</include> </schemaIncludes> <extension>true</extension> <generateDirectory>${project.build.directory}/generated-sources/xjc1</generateDirectory> <episodeFile>${project.build.directory}/generated-sources/xjc1/META-INF/1.episode</episodeFile> <bindingDirectory>src/main/resources/dir1</bindingDirectory> <bindingIncludes> <include>1.xjb</include> </bindingIncludes> </configuration> </execution> </executions></plugin>
binding.xjb配置
实现类型匹配,包匹配,如果类型匹配复杂,可能需要实现自己的转换类
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0" schemaLocation="book.xsd"> <jaxb:globalBindingsfixedAttributeAsConstantProperty="true"typesafeEnumBase="xs:string"typesafeEnumMemberName="generateName"generateIsSetMethod="true"><!-- <xjc:noValidator /><xjc:noValidatingUnmarshaller />--> <xjc:serializable uid="1" /> <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" printMethod="javax.xml.bind.DatatypeConverter.printDateTime" /> </jaxb:globalBindings> <jaxb:schemaBindings schemaLocation="1.xsd" node="/xs:schema"> <jaxb:package name="com.cloud" /> </jaxb:schemaBindings> </jaxb:bindings>
Note1: 新版本的plugin不止可以生成java class,还可以帮忙生成object的最重要的几个方法:toString, equals, hashCode, clone,只要在configuration里配置对于的plugin就可以了
<configuration> <extension>true</extension> <args> <arg>-XtoString</arg> <arg>-Xequals</arg> <arg>-XhashCode</arg> <arg>-Xcopyable</arg> </args> <plugins> <plugin> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb2-basics</artifactId> <version><!-- version 0.9.0--></version> </plugin> </plugins></configuration>
Note2: 我遇到过同一个项目中2个xsd文件有同样的node type,不同的内容,虽然指定了不同包来generate source还是报错,最后的解决方案是用2个execution分别解析不同的xsd文件,不过我使用cxf插件就没有遇到这个问题,可以在一个execution里面生成想要的所有Java class。
1 0
- Java与XML的故事一:通过XSD生成Java类
- 用jaxb通过XSD生成Java类,java对象转换成xml文件
- xsd 生成 java类
- xml转xsd,xsd,转java类
- 用jaxb通过XSD生成Java类的CDATA的处理
- 用jaxb通过XSD生成Java类的CDATA的处理
- 解决用jaxb通过XSD生成Java类的CDATA的不生效处理
- java xsd xml
- 另一个java xml xsd
- 另一个java xml xsd
- java xsd xml 2
- 对xsd文件的操作 生成java实体并解析生成的xml
- 对xsd文件的操作 生成java实体并解析生成的xml
- java 生成XSD
- JAVA xsd 生成 dto
- xsd 生成java 对象
- 利用jdk对xsd文件操作生成java实体并解析生成的xml
- xmlBeans xsd生成java类的 scomp命令参数
- Java学习之线程锁--synchronized
- CentOS 7 下图形方式配置pptp客户端
- MOOC-Linux内核lab1 反汇编C语言程序
- GameBuilder开发游戏应用系列之50行代码实现微信漂流瓶
- 学习
- Java与XML的故事一:通过XSD生成Java类
- 20条Linux命令面试问答 留着用
- validatile
- uva 10670 Work Reduction (贪心)
- 从客户端中检测到有潜在危险的 request.form值[解决方法]
- 容易理解博文---Handler
- 网络爬虫c实现
- quick-cocos2d-x 学习系列之八edit
- Android数据缓存