变量属性名称对于 xml 模式定义无效,但您可以为元素进行选择,因此它将是:
<Doc p1="something">
<Code>one</Code>
<Name>two</Name>
</Doc>
为此,您将使用 JaxbElement 并且它不需要包装类。xsd 看起来像这样:
<complexType name="Doc">
<sequence>
<choice maxOccurs="unbounded">
<element name="Code" type="string" />
<element name="Name" type="string" />
</choice>
</sequence>
<attribute name="p1" type="string" />
</complexType>
这将导致以下代码:
@XmlElementRefs({
@XmlElementRef(name = "Code", type = JAXBElement.class, required = false),
@XmlElementRef(name = "Name", type = JAXBElement.class, required = false)
})
protected List<JAXBElement<String>> codeOrName;
像这样使用 JaxbElement 的地方:
new JAXBElement<String>(new QName( "", "Name" ), String.class, Doc.class, value);