0

以下のようなクラスがあり、xSteam を使用して Edge を xml に変換します。

@XStreamAlias("edge")
class Edge{

     @XStreamAsAttribute
     @XStreamAlias("source")
     private String source;

     @XStreamAsAttribute
     @XStreamAlias("target")
     private String target;

     @XStreamAlias("data")
     private Data data;
     .....
}

data=null を設定すると、取得できます

  <edge source="8" target="10" />

しかし、 data =null の場合は下に取得したい

  <edge source="8" target="10" ></edge>

誰かがこれを助けることができますか?

4

2 に答える 2

2

Dom4JDriver ドライバーを使用できます。その場合、次のコードのように xml 出力をフォーマットできます。

OutputFormat outPutFormat = new OutputFormat();
outPutFormat.setLineSeparator("");
outPutFormat.setExpandEmptyElements(true);
outPutFormat.setEncoding("UTF-8");

Dom4JDriver d4j = new Dom4JDriver(new XmlFriendlyNameCoder("_", "_"));
d4j.setOutputFormat(outPutFormat);
XStream xstream = new XStream(d4j);
xstream.autodetectAnnotations(true);

于 2014-10-02T15:08:50.187 に答える
0

XML レベルでは、両方のフォームが完全に同一であるため、XML レベルでできることは何もありません。あるフォームが本当に必要な場合は、独自の XML シリアライザーを提供するか、既定のシリアライザーを使用してその出力ストリームを後処理する必要があります。現在データをどのようにシリアル化しているかを知らずに、詳細を説明することはできません。

于 2012-07-18T16:06:18.617 に答える