0

私はプロジェクトで働いています。Aには、いくつかのプロパティを持つJava Beanがあります。次のように、各属性にタグ @XmlElement を付けます。

@XmlElement(name="id", nillable = true)
private String test;

これを「nillable」にすると、nullがtrueの場合でもタグが表示されますが、nullの場合はxmlにメッセージが表示されます

<id xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

しかし、それがnullの場合、このようにタグのみで空の値を表示したい

<id></id>

そして、私はこれを行う方法がわかりません。調べたのですが方法が分からなかったので質問させてください。

さらに 1 つ、属性のない XML を生成できますか? 私のXMLは、内部に何もないタグだけを大量に生成する必要があるため、タグを表示するためだけにこれを使用しない場合は、属性を大量に作成したくありません

ありがとう !

私が使用しているインポートといくつかの設定

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="test")

- - - - -解決 - - - - -

こんにちは、みんな、私は解決策を見つけました。誰かが同じ問題で立ち往生した場合、共有したいと思います。String personName = ""; のように、Class のプロパティを空として宣言します。

この値を変更せず、タグを XML に追加するだけで空にしたい場合は、Getter と Setter を作成する必要はありません。

注: この作業では、クラスで @XmlAccessorType(XmlAccessType.FIELD) を使用する必要があります。ありがとうございます。さよなら

4

1 に答える 1

1

nullXML で値を表す方法は 2 つあります。

1 つのオプションが説明されていxsi:nilます。属性に空のタグを追加し、null 値を保持していると注釈を付けるだけです。このフォームは、属性に で注釈を付けると、JAXBnillable = trueによって生成されます。

空のタグは、空の文字列を持つタグと同じではないことに注意してください。ただし、後で詳しく説明します。

別のオプションは、その属性をまったく表現しないことです。XML には属性のタグがありません。JAXBnillable = trueは、Java コードにアノテーションを付けなくても属性に値が残る場合、デフォルトでこのアプローチを使用しnullます。

以上です。

今、あなたが達成したいことへ。レンダリング<id></id>とは、基本的に、空の文字列idを保持する属性があることを意味します。これが値に相当する言語 (たとえば、Oracle の PL/SQL) をおそらく見つけることができますが、Javaの値に相当するものではないことは明らかです。nullnull

さらに、 Java Bean でor (または非 String 型)idとしてモデル化されている場合、パーサーはそのような XML を Bean インスタンスにデシリアライズできません。longint

于 2016-06-21T20:31:20.530 に答える