Java 命令行中的XJC-JAXB注释
我目前正致力于从XSD文件生成Java类。 我使用限制创建了一个XSD文件。 例如,我想以特定格式MMYY解析一个日期。 例如: 由于我被这个问题所困扰,我有以下两个问题:Java 命令行中的XJC-JAXB注释,java,xsd,jaxb,xjc,Java,Xsd,Jaxb,Xjc,我目前正致力于从XSD文件生成Java类。 我使用限制创建了一个XSD文件。 例如,我想以特定格式MMYY解析一个日期。 例如: 由于我被这个问题所困扰,我有以下两个问题: 为了实现这些目标,最好的方法是什么 解析时的限制 如何实施 提示: JAXB绑定[ krasajaxb工具[ 更新 所以我创建了一个绑定文件: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <jaxb:bindings version="
- 为了实现这些目标,最好的方法是什么 解析时的限制李>
- 如何实施
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.0" 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"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings>
<xjc:simple />
<xjc:serializable uid="-1" />
<jaxb:javaType name="java.util.Date" xmlType="xs:date"
parseMethod="general.CalendarFormatConverter.parseDate"
printMethod="general.CalendarFormatConverter.printDate" />
</jaxb:globalBindings>
</jaxb:bindings>
因此,我现在可以转换,但日期的格式与限制不匹配…您可以在编组和解编期间根据架构进行验证,这也会检查XSD中的限制。@Jesper:确实如此,但计划是将其交给技术水平较低的人处理,此人只会执行一行command…所以越少的切换越好…您研究过jaxb全局绑定了吗?也许类似的东西会起作用:您可以在编组和解编组过程中根据模式进行验证,这也会检查XSD中的限制。@Jesper:的确,但计划是将其交给不太复杂的人处理从技术上讲,这个人只执行一行命令…所以越少的切换越好…您已经研究过jaxb全局绑定了吗?也许这样的东西会起作用:
protected XMLGregorianCalendar dummyDate;
/**
* Gets the value of the dummyDate property.
*
* @return
* possible object is
* {@link XMLGregorianCalendar }
*
*/
public XMLGregorianCalendar getdummyDate() {
return dummyDate;
}
/**
* Sets the value of the dummyDate property.
*
* @param value
* allowed object is
* {@link XMLGregorianCalendar }
*
*/
public void setdummyDate(XMLGregorianCalendar value) {
this.dummyDate= value;
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.0" 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"
jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings>
<xjc:simple />
<xjc:serializable uid="-1" />
<jaxb:javaType name="java.util.Date" xmlType="xs:date"
parseMethod="general.CalendarFormatConverter.parseDate"
printMethod="general.CalendarFormatConverter.printDate" />
</jaxb:globalBindings>
</jaxb:bindings>
package general;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class CalendarFormatConverter {
/**
* Calendar to custom format print to XML.
*
* @param val
* @return
*/
public static Date parseDate(String val) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMYY");
Date date = null;
try {
date = simpleDateFormat.parse(val);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date;
}
/**
* Date to custom format print to XML.
*
* @param val
* @return
*/
public static String printDate(Date val) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMYY");
return simpleDateFormat.format(val);
}
}