#xml #soap #xsd #jaxb
#xml #soap #xsd #jaxb
Вопрос:
Я разархивирую SOAP-сообщение с помощью JAXB, и хотя большая часть сообщения выглядит нормально при разархивировании, один элемент имеет значение null, когда его содержимое должно быть обычным текстом. Если я изменю его содержимое на xml (например <Test> Something </test>
, он работает нормально.
Я полагаю, что схема, описывающая эту часть, выглядит следующим образом:
<xsd:complexType name="NotificationMessageHolderType" >
<xsd:sequence>
<xsd:element name="Topic"
type="wsnt:TopicExpressionType"
minOccurs="1" maxOccurs="1" />
<xsd:element name="ProducerReference"
type="wsa:EndpointReferenceType"
minOccurs="1" maxOccurs="1" />
<xsd:element name="Message" type="xsd:anyType"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
Проблема связана с ПОСЛЕДНИМ элементом в этой схеме, элементом Message . Его тип «xsd: anyType», разве это не означает, что он может содержать что угодно? Но при отмене сопоставления с помощью JAXB любое неструктурированное содержимое (дословный текст), похоже, опускается.
Кто-нибудь знает, почему и что я мог бы сделать, чтобы исправить ситуацию?
С уважением, Eflite
Ответ №1:
Эта страница (примечание, архивированный элемент wayback machine) — лучшее место для поиска ответа; он предоставляет наглядный пример того, как обращаться к вашему сценарию.
Я цитирую оттуда: «Если вам нужно упорядочить произвольный контент, вам нужно будет создать дерево контента в соответствии с org.w3c.dom. JAXB от Sun в настоящее время использует реализацию из Apache Xerces, то есть класс apache.xerces.internal.dom.ElementNSImpl . «