У меня есть строка xml, которая является ответом от стороннего сервера.
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<GetRateQuoteResponse>
<GetRateQuoteResult>
</GetRateQuoteResult>
</GetRateQuoteResponse>
</SOAP-ENV:Body></SOAP-ENV:Envelope>
Я хочу разобрать его в JAX-WS. Поэтому я преобразовал эту строку в файл xsd, используя этот веб-сайт
Веб-сайт дал мне xsd следующим образом.
<?xml version="1.0" encoding="utf-16"?>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="SOAP-ENV:Envelope">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="SOAP-ENV:Body">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetRateQuoteResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="GetRateQuoteResult" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Теперь я генерирую классы JaxB из этого xsd, он пытается создать класс с именем SOAP-ENV:Envelope и SOAP-ENV:Body, который является недопустимым именем для класса, и это не удается сделать это.
Также, даже если я изменю xsd на Envelope и Body, Unmarshalling не удастся.
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://schemas.xmlsoap.org/soap/envelope/", local:"Envelope"). Expected elements are <{}SOAP-ENV:Envelope>
Пожалуйста, направляйте.
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
в элемент схемы XMLxsd:schema
. Обычно конверт обрабатывается программным обеспечением веб-службы. - person laune   schedule 29.12.2014