XJC似乎完全忽略了我的XML Schema元素上的mixed="true"
,因此不允許我提取文本內容。從下面的示例XML中,我需要能夠提取「標題文本」。如果沒有mixed="true"
得到認可,沒有訪問創建也不是從XML解組:JAXB XJC編譯器忽略XML模式文檔中的mixed = true
<?xml version="1.0" encoding="UTF-8"?>
<title xmlns="urn:hl7-org:v3" integrityCheck="true">Title Text</title>
以下是一個演示的問題的完整而最小化的模式:
<?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>
注意,在上面我已經混合= 「真正」。儘管如此,生成的模式片段不包含對它的引用,也不會生成的類使用XmlMixed
註解,也不是一個值或內容訪問:
/**
* <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
{
}
爲什麼XJC/JAXB完全無視我的混合內容字段?我已經嘗試了JAXB 2.1和JAXB 2.2,但生成的代碼中只有微不足道的差異。
注意:由於實際架構是符合標準的醫療保健(HL7)架構,因此無法更改架構。
BIN類是什麼樣的? – 2010-10-29 13:27:29
@Blaise - 我現在已經包含了一個小而完整的模式來演示這個問題。 – 2010-10-29 17:21:40
有沒有找到解決這個問題的辦法?我面對同一個。我不得不編輯生成的類(BIN)。 – AHungerArtist 2011-06-14 20:00:51