java - 从 XML 模式文件和 XJB 绑定生成具有常量的 JAXB 类
问题描述
目前,在使用生成的 JAXB 类时,我必须在 java 代码中手动硬编码模式版本(或解析它)。这在更改 XML 模式版本时很容易导致错误,并且感觉不对。我想要的是在架构中指定架构版本,并让 xjc 在相应的根元素类中生成一个常量。
我还没有找到可以用来满足这些要求的 JAXB 插件或绑定机制。
例子.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:my="my:namespace:v1"
targetNamespace="my:namespace:v1"
xmlns="my:namespace:v1"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
<!-- Use this version information in generated class! -->
version="1.0">
<xs:element name="root" type="RootType"/>
<xs:complexType name="RootType">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="xsdVersion" type="xs:string" use="required"/>
[...]
</xs:schema>
生成的 RootType.class:
[...]
public class RootType {
protected String name;
protected String xsdVersion;
// This shall be generated too
public static final GENERATED_WITH_VERSION = "1.0";
[...]
}
解决方案
推荐阅读
- sql - CROSS APPLY query very slow when additional column added
- javascript - React Native:带有 extraData 的 FlatList 过滤器不会刷新
- python - Passing a variable from another function
- generics - Is there any way to simulate Generic Associated Types / Associated Type Constructors in Rust?
- python - 播放 pygame 音乐时的用户输入
- node.js - why sometimes npm install is not working on mac?
- r - 如何在 R 中的 ifelse 语句中使用 or ?
- javascript - 带有循环的奇怪的Javascript变量函数范围
- python - 如果 x 不是类绑定或实例绑定变量,self.x 如何工作?
- javascript - 在上传的图像上绘制矩形