java - JAXB IDREF 和 ID 用法?

标签 java xml xsd jaxb

我正在寻找一个 XSD,它将用于通过 JAXB 生成一些 Java 类。我希望生成的 XML 看起来像这样:

<Appointment>
    <Patient ref="12345">Bob Smith</Patient>
    <Type>Some Appointment Type</Type>
    <Date>2010-02-17</Date>
    ....
</Appointment>

因此,鉴于此架构,我希望它生成一个类,我可以在其中执行如下操作:

Patient p = loadPatientFromDB();
Appointment a = new Appointment();
a.setPatient(p);
a.setType("Some Appointment Type");

我想我想要做的是让一个元素有一个 IDREF 作为属性,然后一个字符串作为元素的内容。

谁能帮我介绍一些 XSD?

谢谢!

编辑

这个问题也可以通过以下方式提出。

简单类型可以有属性,还是必须是复杂类型。

那么,你能不能拥有

  <element id="foo">bar</element>

或者你必须有

  <element id="foo"><name>bar</name></element>

最佳答案

我会回答你的第二个问题,因为它问得非常清楚。不,简单类型不能有属性。您正在寻找的是具有简单内容的复杂类型:

<xs:complexType name="Person">
    <xs:simpleContent>
        <xs:extension base="xs:string">
           <xs:attribute name="ref" type="xs:IDREF" use="required"/>
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

编辑:您现在可以按预期使用此类型,将其分配给名为“person”的元素,您可以拥有 <person id="foo">A Name</person> .

关于第一个问题:如果您真的想要解析 ID,您还有一些额外的工作要做。例如,see here .

关于java - JAXB IDREF 和 ID 用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2276595/

相关文章:

java - 使用Apache POI的方法的Java单元测试

java - 如何在 eclipse 中为 jar 附加 javadoc?

java - 如何创建多列 CardView

java - XmlJavaTypeAdapter 可以将对象编码到另一个对象吗?

c# - 未声明 XML 签名元素

javac 不是内部或外部命令,也不是可运行的程序或批处理文件

java - 为什么 javac 不接受 `x = x+++++y` ?

java - 如何将外部文件夹链接到我的 tomcat 8 应用程序

xsd - 如何在 NuGet 包中包含配置部分的 XSD 文件?

xsd - 使用xsd.exe生成架构