XJC sembra ignorare completamente mixed="true"
sugli elementi XML Schema, pertanto non mi consente di estrarre il contenuto del testo. Dal seguente XML di esempio, devo essere in grado di estrarre "Titolo Testo". Senza mixed="true"
essere riconosciuto, non di accesso si crea né si deserializzati da XML:Compilatore JAXB XJC che ignora mixed = true sui documenti XML Schema
<?xml version="1.0" encoding="UTF-8"?>
<title xmlns="urn:hl7-org:v3" integrityCheck="true">Title Text</title>
Ecco uno schema completo, ma ridotto al minimo che illustra il problema:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema targetNamespace="urn:hl7-org:v3"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:hl7-org:v3"
xmlns:mif="urn:hl7-org:v3/mif"
elementFormDefault="qualified">
<xs:complexType name="ST" mixed="true">
<xs:complexContent>
<xs:restriction base="ED">
<xs:sequence>
<xs:element name="reference" type="xs:string" minOccurs="0" maxOccurs="0"/>
<xs:element name="thumbnail" type="xs:string" minOccurs="0" maxOccurs="0"/>
</xs:sequence>
<xs:attribute name="compression" type="xs:string" use="prohibited"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ED" mixed="true">
<xs:complexContent>
<xs:extension base="BIN">
<xs:sequence>
<xs:element name="reference" type="xs:string" minOccurs="0" maxOccurs="1" />
<xs:element name="thumbnail" minOccurs="0" maxOccurs="1" type="xs:string" />
</xs:sequence>
<xs:attribute name="compression" type="xs:string" use="optional" />
<xs:attribute name="integrityCheck" type="xs:string" use="optional" />
<xs:attribute name="integrityCheckAlgorithm" type="xs:string" use="optional" default="SHA-1" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="BIN" abstract="true" mixed="true">
<xs:complexContent>
<xs:extension base="ANY">
<xs:attribute name="representation" use="optional" type="xs:string" default="TXT" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="ANY" abstract="true">
<xs:attribute name="nullFlavor" type="xs:string" use="optional" />
</xs:complexType>
<xs:element name="title" type="ST" />
</xs:schema>
Si noti che nella sopra ho mescolato = "vero". Nonostante ciò, il frammento di schema generato non contiene un riferimento ad esso, né la classe generata utilizzare il XmlMixed
annotazioni, né un valore o il contenuto di accesso:
/**
* <p>Java class for ST complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="ST">
* <complexContent>
* <restriction base="{urn:hl7-org:v3}ED">
* <sequence>
* <element name="reference" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="0" minOccurs="0"/>
* <element name="thumbnail" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="0" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ST")
public class ST
extends ED
{
}
Perché XJC/JAXB trascurando completamente il mio contenuto misto campi? Ho provato sia JAXB 2.1 che JAXB 2.2 ma nel codice generato sono presenti solo differenze banali.
Nota: Non riesco a modificare lo schema poiché lo schema corrente è uno schema di assistenza sanitaria conforme agli standard (HL7).
Che aspetto ha la classe BIN? –
@ Blaise - Ora ho incluso uno schema piccolo ma completo che dimostra il problema. –
Hai mai trovato una soluzione a questo problema? Sto affrontando lo stesso. Ho dovuto modificare la classe generata (BIN). – AHungerArtist