私は、文字列のマップをマーシャリングするために構築したカスタムXMLアダプタ用のXmlTypeを持つPOJOオブジェクトを使用しています。私は問題を抱えていますが、ヌル値を適切に使用できるようにすることで問題が発生しています。私はそれを動作させることができましたが、私はそれが生成しているXMLに満足していません。xmlアダプタで使用されるカスタムタイプのnull値を整列する
これは私が現在取り組んでいる作業ですが、サンプルのXML結果からわかるように、適切なxmlns:xsi = "http://www.w3.org"は含まれていません/ 2001/XMLスキーマ・インスタンス」のxsi:なし= "真" 値
@XmlType(name="element")
public class RestMapElements {
@XmlAttribute(name="name")
public String key;
@XmlValue
public String value;
public RestMapElements(String key, String value) {
this.key = key;
this.value = value;
}
}
(関連データにスリミング)得られたXML。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
...
<element-list>
<item name="activated_date">2012-03-29 11:34:14.323</item>
<item name="some_null_value"/>
</element-list>
...
しかし、私はちょうどXMLはそれを動作させるために項目タグの内側に追加の「値」のタグを追加することに満足していないよ、それはこれで仕事を得ることができました。 (サイドノート、私は、XMLType名の宣言で指定しようとしたように、なぜそれではなく、要素の項目に命名された?)
@XmlType(name="element")
public class RestMapElements {
@XmlAttribute(name="name")
public String key;
@XmlElement(nillable = true)
public String value;
public RestMapElements(String key, String value) {
this.key = key;
this.value = value;
}
}
を再度、(関連データにスリム化)結果のXMLを。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
...
<element-list>
<item name="activated_date"><value>2012-03-29 11:34:14.323</value></item>
<item name="some_null_value"><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></item>
</element-list>
...
実際には、問題を解決するために2番目の方法を使用できます。私はちょうど注釈を使ってJAXBがこれを私が探しているものに曲げることを許可するかどうかを知るための学習経験として、空白値をサポートできるようにアイテムタグの下に付加的な値タグを追加する必要がないようにしたい。今、最初の例で非整列化すると、nullの代わりに空の文字列を取得することになります。 2番目の例では、私が期待していたヌル値を取得します。
参考:現在、Jersey 1.11を使用しています。
はええ、私はその解決策から離れようとする。私はそれをXmlAdapterで修正するだけでも、それを考えましたが、サービスが正しいようにして、Webサービス上のライブラリを構築するときに、同じ実装として動作するようにします。ラッパー・ライブラリーをRESTサービスのストレート・トランスレーターにしておきたいと思っています。 – rmmeans