私はJavaクラスを生成するためにjaxbプラグイン(rg.jvnet.jaxb2.maven2)を使用しています。だから、私は自動的にJavaクラスを生成するxsdを使用しています。私は自分の解決策を抽象的にしたい。抽象クラスの抽象リストのアンマーシャリング
私は
<RESULTS>
<RESULT>
<TOKEN>XXXXXXXXXXXXXXXXXXXXXXXXX</TOKEN>
<LANGUAGE>en</LANGUAGE>
<SEARCHTYPE>PO</SEARCHTYPE>
</RESULT>
</RESULTS>
その後XMLを持って、私は他の製品の同じXMLを持っているつもりですが、余分なNUMBER要素
<RESULTS>
<RESULT>
<TOKEN>XXXXXXXXXXXXXXXXXXXXXXXXX</TOKEN>
<LANGUAGE>en</LANGUAGE>
<SEARCHTYPE>PO</SEARCHTYPE>
<NUMBER>123456789</NUMBER>
</RESULT>
</RESULTS>
と私は抽象として私の解決策を作りたいです。以下は私のjaxbの実装です。
1) My Resultsクラスには結果リストが含まれています。私はこの結果をBaseResultとして作成しました。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "RESULTS", propOrder = {
"baseresult"
})
public class Results implements Equals2, HashCode2, ToString2
{
@XmlElement(name = "BASERESULT", required = true)
protected List<BaseResult> baseresult;
}
2)これは一般的なフィールドを持つ私のBaseResultクラスです。
BaseResultはEquals2、HashCode2、ToString2は {
@XmlElement(name = "TOKEN", required = true)
protected String token;
@XmlElement(name = "LANGUAGE", required = true)
protected String language;
}
これはコード
<xs:complexType name="RESULTS">
<xs:annotation>
<xs:documentation>
Holds results tag <!-- <RESULTS></RESULTS> -->
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="BASERESULT" type="BASERESULT" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="BASERESULT" abstract="true">
<xs:annotation>
<xs:documentation>
Holds result <!-- <RESULT></RESULT> -->token , with all common elements in result tag
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="TOKEN" type="xs:string" />
<xs:element ref="LANGUAGE" type="xs:string"/>
</xs:sequence>
</xs:complexType>
3の上に生成するために、私のXSDファイルで実装パブリック抽象クラス)これは、結果の子クラスで、子フィールドがあります。
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "RESULT", propOrder = {
"searchType"
})
public class Result extends BaseResult
implements Equals2, HashCode2, ToString2
{
@XmlElement(name = "SEARCHTYPE", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlSchemaType(name = "NCName")
protected String searchType;
}
これは、問題は、私が前述したように、私のxmlを作成することはできませんよなコード
<xs:complexType name="RESULT">
<xs:complexContent>
<xs:extension base="BASERESULT">
<xs:sequence>
<xs:element ref="SEARCHTYPE" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
上に生成するために、私のXSDファイルです。 mu xmlの結果を埋めることができません。
@XmlElement(name = "BASERESULT", required = true)
protected List<BaseResult> baseresult;
これはあなたのXMLでBASERESULT要素を見つけるために期待していることを伝えます:
ここから来