java - 如何在Java中知道JAXB中的下一个元素

标签 java xml jaxb

我有一个类似这样的架构

<xs:schema xmlns="http://www.ncpdp.org/schema/SCRIPT" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ncpdp.org/schema/SCRIPT" elementFormDefault="qualified">
<!-- Message -->
<xs:element name="Message" type="MessageType"/>
<xs:complexType name="MessageType">
    <xs:sequence>
        <xs:element name="Header" type="HeaderType"/>
        <xs:element name="Body" type="BodyType"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="HeaderType">
    <xs:sequence>
        <xs:element name="To" type="QualifiedMailAddressType">
        </xs:element>
        <xs:element name="From" type="QualifiedMailAddressType">
        </xs:element>
</xs:complexType>
<!-- Body -->
<xs:complexType name="BodyType">
    <xs:choice>
        <xs:annotation>
            <xs:documentation>UIH-010-4</xs:documentation>
        </xs:annotation>
        <xs:element ref="TEST1"/>
        <xs:element ref="TEST2"/>

    </xs:choice>
</xs:complexType>
    <xs:element name="TEST1">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="Gender" minOccurs="0"/>
            <xs:element name="DateOfBirth" type="DateType" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
    <xs:element name="TEST2">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="salary" minOccurs="0"/>
            <xs:element name="DateOfDeath" type="DateType" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>

我已经为此 XML 生成了 JAXB 对象。

我的请求消息将在 body 元素内包含 TEST1 或 TEST2。我想知道的是如何知道是TEST1还是TEST2。

我知道我们可以通过 xPATH 读取此内容,但我有点好奇我们是否可以通过 JAXB 生成的类来确定

例如,如果我解码消息

MessageType messageType = helper.unmarshal(message);
BodyType bodyType  =    messageType.getBody();

在 bodyType 中,它将是 TEST1 或 TEST2。我们如何确定这一点?

最佳答案

bodyType.getTest1() != null // true if TEST1

bodyType.getTest2() != null // true if TEST2

关于java - 如何在Java中知道JAXB中的下一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24922936/

相关文章:

java - Android 和 JAX-RS

java - SmartGWT:在本地和服务器端验证 DynamicForm

java - 如何在 Richfaces panelBar Item 中设置焦点?

java - Android TextInput 提示文本颜色

java - Xml解析为Java对象

javascript - 如何在 ASP/vbscript 中解析 XML?

java - 如何在解码时捕获多次出现的 xml 到 pojo?

java - 是否有用于状态名称查找/查找的 Java API 或快捷方式?

java - 如何知道它是哪种序列文件?

java - 使用 JAXB 或 XML DOM 对象时 Spring Web 服务返回不同的结果