我有一个类似这样的架构
<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/