Здравствуйте. Есть такой элемент в схеме:
spoiler<xs:element name="CustomAttributes" minOccurs="0">
<xs:annotation>
<xs:documentation>Дополнительные атрибуты документа</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax"/>
</xs:sequence>
</xs:complexType>
</xs:element>
И есть схемы для элементов, которые могу быть вложены в
CustomAttributes
:
spoiler<xs:element name="ServiceProperties">
<xs:annotation>
<xs:documentation xml:lang="ru">МЖИ:Лицензирование предпринимательской деятельност</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="adress_house" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="ru">Адрес дома</xs:documentation>
</xs:annotation>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
Сгнерировались такие классы:
spoiler@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "CustomAttributes", propOrder = {
"any"
})
public static class CustomAttributes {
@XmlAnyElement(lax = true)
protected Object any;
/**
* Gets the value of the any property.
*
* @return
* possible object is
* {@link Element }
* {@link Object }
*
*/
public Object getAny() {
return any;
}
/**
* Sets the value of the any property.
*
* @param value
* allowed object is
* {@link Element }
* {@link Object }
*
*/
public void setAny(Object value) {
this.any = value;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
})
@XmlRootElement(name = "ServiceProperties")
public class ServiceProperties {
@XmlElement(name = "adress_house")
protected String adressHouse;
/**
* Gets the value of the adressHouse property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getAdressHouse() {
return adressHouse;
}
/**
* Sets the value of the adressHouse property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setAdressHouse(String value) {
this.adressHouse = value;
}
}
Нужно, чтобы получился xml вида:
<CustomAttributes>
<ServiceProperties>
<adressHouse >123</adressHouse >
</ServiceProperties>
</CustomAttributes>
Мой код:
ServiceProperties serviceProperties = new ServiceProperties();
serviceProperties.setAdressHouse("123");
customAttributes.setAny(serviceProperties );
Не работает. Он просто вызывает
toString()
у этого объекта (
serviceProperties
).
Пробовал через
JAXBElement
, но тоже не помогает. Есть какое-то нормальное решение?
(Пока идея только отдельно сериализовать
serviceProperties
, а потом кидать его в метод
setAny()
; но это какое-то костыльное решение)