У меня есть предопределенная схема xsd (которую я не могу изменить к сожалению), для которой я хотел бы сгенерировать соответствующие классы JAVA через JAXB. В настоящее время я борюсь со сложным типом, который определяется следующим образом.JAXB Доступ к содержимому строки из anyType
<xsd:complexType name="AttributeType">
<xsd:complexContent>
<xsd:extension base="xsd:anyType">
<xsd:attribute name="id" type="xsd:anyURI" use="required"/>
<xsd:anyAttribute processContents="lax"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
Примеры XML предоставляемые, позволяют прямое содержимое строки, например:
<attribute id="myValue">201</attribute>
, а также встроенный XML как это:
<attribute id="address">
<example:Address xmlns:example="http://example.com/ns">
<Street>100 Nowhere Street</Street>
<City>Fancy</City>
<State>DC</State>
<Zip>99999</Zip>
</example:Address>
</attribute>
При запуске процесса XJC без дальнейшего связывания модификация, я получаю такой класс:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "AttributeType", propOrder = {
"any"
})
public class AttributeType {
@XmlAnyElement
protected List<Element> any;
@XmlAttribute(name = "id", required = true)
@XmlSchemaType(name = "anyURI")
protected String id;
@XmlAnyAttribute
private Map<QName, String> otherAttributes = new HashMap<QName, String>();
// getter setter omitted
}
Проблема в том, что я не могу получить содержимое строки в первом примере. Это может ссылаться на XSD anytype and JAXB, но на самом деле я не знаю, чтобы достичь этого, не изменяя XSD. Итак, как я могу получить содержимое строки? Btw. Я использую maven cxf-codegen-plugin для генерации источника.
Вы смогли решить проблему? Ссылка на ссылку [link] (https://stackoverflow.com/questions/3488141/xsd-anytype-and-jaxb) - это то же самое, что у меня есть, и я пытаюсь понять, как ее преодолеть. Ответы там не сработали. – JGlass