2017-02-09 10 views
0

XSDおよびJAXBで新しく追加されました。 私はいくつかのクラス(Employee.java)とpackage-info.javaファイルで、パッケージ全体、つまり "com.ilume"を生成するlogic.xsdというXSDスキーマファイルを持っています。XSDファイル経由でXmlAdapterクラスを追加する方法

カスタムアダプタクラスを同じパッケージ(StringTrimAdapterクラスのようなアダプタクラス、How to configure JAXB so it trims whitespaces when unmarshalling tag value?に示す)に追加したいとします。このアダプタクラスは私のlogic.xsdから生成する必要があります (それがStringTrimAdapterことを生成することができるように私はlogic.xmlファイルに追加する必要があります?)

と私は@XmlJavaTypeAdapter(MyNormalizedStringAdapter.class)がpackage-info.javaに追加したいです。どのようなバインディングを書くべきか、どこで?

答えて

0

私は昨日同じ問題を抱えていました。

最善の解決策は、

@XmlJavaTypeAdapter(CollapsedStringAdapter.class)

を使用することです。 をトリミングするのに役立つ既存のビルトインタイプのアダプターです。例えば

、このXMLにこのために

<books> 
    <book> 
     <name><![CDATA[ <br> Harry Potter </br> 
     ]]></name> 

    </book> 
</books> 

を取る、あなたはJavaクラスを持つことになります。

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "books") 
public class Books { 

    @XmlValue 
    protected String name; 
    ...... 
} 

は、あなただけのCDATA部分がが含まれている変数名の上にそのアダプタを追加する必要があります。

@XmlValue 
@XmlJavaTypeAdapter(CollapsedStringAdapter.class) 
protected String name; 

その後、IDEは

import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; 
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 

厥にそれを必要なライブラリファイルをインポートするように求められます。それがあなたを助けることを願って:)。

関連する問題