jaxb2-maven-plugin 1.3
从对象中跳过属性。我无法修改XSD
。在XSD
(片段)中:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="classA" type="classA" substitutionGroup="classSubA"/>
<xs:complexType name="complexClassA" mixed="true">
<xs:attribute name="attA">
<xs:annotation>
<xs:appinfo>
<moProperty value="classA:attA"/>
<label value="Attribute A" default="true"/>
<externAccess value="readWrite"/>
<description value="NO COMMENTS"/>
</xs:appinfo>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="off"/>
<xs:enumeration value="on"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="id" type="xs:unsignedInt">
<xs:annotation>
<xs:appinfo>
<moProperty value="myClassB:id"/>
<label value="Id" default="true"/>
<externAccess value="readWrite"/>
<description value="NO COMMENTS"/>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:schema>
结果Java Object
(片段):
public class ComplexClassA {
@XmlSchemaType(name = "unsignedInt")
protected Long id;
}
为什么它没有生成attA
成员?
可能导致内联枚举?
谢谢。
乌
答案 0 :(得分:1)
您能提供一个完整的XML架构来演示这个问题吗?在线下面是我尝试过的,一切似乎都按预期工作。
当我在以下XML架构上运行XJC时:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Foo" xmlns="http://www.example.org/Foo"
elementFormDefault="qualified">
<xs:complexType name="complexClassA" mixed="true">
<xs:attribute name="attA">
<xs:annotation>
<xs:appinfo>
<moProperty value="classA:attA"/>
<label value="Attribute A" default="true"/>
<externAccess value="readWrite"/>
<description value="NO COMMENTS"/>
</xs:appinfo>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="off"/>
<xs:enumeration value="on"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="id" type="xs:unsignedInt">
<xs:annotation>
<xs:appinfo>
<moProperty value="myClassB:id"/>
<label value="Id" default="true"/>
<externAccess value="readWrite"/>
<description value="NO COMMENTS"/>
</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:schema>
我按预期得到了以下课程:
package org.example.foo;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlValue;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "complexClassA", propOrder = {
"content"
})
public class ComplexClassA {
@XmlValue
protected String content;
@XmlAttribute
protected String attA;
@XmlAttribute
@XmlSchemaType(name = "unsignedInt")
protected Long id;
public String getContent() {
return content;
}
public void setContent(String value) {
this.content = value;
}
public String getAttA() {
return attA;
}
public void setAttA(String value) {
this.attA = value;
}
public Long getId() {
return id;
}
public void setId(Long value) {
this.id = value;
}
}
答案 1 :(得分:1)
转到
之后org.jvnet.jaxb2.maven2 行家-JAXB2-插件
一切都很好。
感谢您的时间。
答案 2 :(得分:0)
您使用的是什么JAXB版本?内联枚举应该正确地转换为Java枚举。
您可以尝试在Attribute定义之外定义simpleType,这可能会有所帮助。