Обычно JAXB работает, но он неправильно анализирует мою схему или что-то в этом роде, так как он должен помещать XMLRootElement в мой объект, и это не так. Я использую этот код, чтобы попытаться демонтировать, что не удается, и мне приходится прибегать к использованию пакета в качестве строки ..
ProductsDomainResponseType resp = unmarshaller.unmarshall(ProductsDomainResponseType.class, strXmlInput);
Это xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.cigna.com/acme/services/product/2012/03"
xmlns:prd="http://www.cigna.com/IFPRetail/Product/0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:outc="http://www.cigna.com/acme/domains/utility/outcome/2010/03"
targetNamespace="http://www.cigna.com/acme/services/product/2012/03"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://www.cigna.com/IFPRetail/Product/0.1" schemaLocation="product.xsd" />
<xs:import namespace="http://www.cigna.com/acme/domains/utility/outcome/2010/03" schemaLocation="InvocationOutcome_2010_03.xsd" />
<xs:element name="productsDomainResponse" type="ProductsDomainResponseType">
<xs:annotation>
<xs:documentation>in case of error use invocationOutcome element from
InvocationOutcome XSD in utility namespace</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="ProductsDomainResponseType">
<xs:annotation>
<xs:documentation>Products Domain XML Response</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element ref="outc:invocationOutcome" />
<xs:element name="products" type="ProductType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProductType">
<xs:sequence>
<xs:element ref="prd:product" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Наконец, в моем результирующем объекте отсутствует элемент XmlRootElement. Есть идеи, что происходит?
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ProductsDomainResponseType", propOrder = {
"invocationOutcome",
"products"
})
public class ProductsDomainResponseType {