文字列のマップをマーシャリングするために作成したカスタム XML アダプターに、XmlType を持つ POJO オブジェクトを使用しています。ただし、null 値を適切に使用できるようにするのに問題があります。動作させることはできましたが、生成される XML には満足できません。
これは私が現在使用しているものであり、作業したいと考えていますが、サンプルの XML 結果でわかるように、適切な xmlns:xsi="http://www.w3.org/2001/XMLSchema が含まれていません。 -instance" xsi:nil="true" 値
@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番目を使用できます。これを学習体験として使用して、null 値をサポートできるように、項目タグの下に追加の値タグを追加することなく、アノテーションを使用する JAXB がこれを探しているものに曲げることができるかどうかを確認したいだけです。 . 現在、最初の例でアンマーシャリングすると、null ではなく空の文字列が返されます。2 番目の例では、予期していた null 値を取得しています。
参考までに: 現在、Jersey 1.11 を使用しています。