* *编辑 - 最后我删除了抽象扩展以使其正常运行,下面的答案来自Blaise然后工作
您好。
我的架构中有一个复杂的类型:
<xs:complexType name="AbstractWorkflow" abstract="true">
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
<xs:complexType name="ProcessWorkflow" mixed="true">
<xs:complexContent>
<xs:extension base="AbstractWorkflow"/>
</xs:complexContent>
</xs:complexType>
要解组的输入是
<ns1:Workflow stb:id="Workflow" xsi:type="ns1:ProcessWorkflow">workflowHTML.xml</ns1:Workflow>
但是当我这样做时,我没有选择从类中访问值:workflowHTML.xml 从xjc生成的。这是生成的AbstractWorkflow类的开始是否有一个我可以在这个类中声明的注释,它扩展了一个抽象类,指定它是一个带有值本身的元素?不要这样做被声明为FIELD或?
编辑它是扩展类,我需要实现读取值而不是我原来在的抽象类。
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
@XmlType(name = "ProcessWorkflow")
public class ProcessWorkflow
extends AbstractWorkflow
{
}
感谢阅读。
答案 0 :(得分:3)
我相信您正在寻找@XmlValue注释。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Foo {
@XmlAttribute
private int id;
@XmlValue
private String value;
}
以上对应于以下XML架构:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo" type="foo"/>
<xs:complexType name="foo">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="id" type="xs:int" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>
这样的XML:
<foo id="123">Some Value</foo>