f.e:jaxb何らかの順序で値をマーシャリングする方法は?私は私のコレクションの値はアルファベット順に格納されたXMLを持ちたい
<tag1>a</tag1>
<tag1>b</tag1>
<tag1>c</tag1>
は、JAXBと、それは可能ですか?
ありがとうございます。
f.e:jaxb何らかの順序で値をマーシャリングする方法は?私は私のコレクションの値はアルファベット順に格納されたXMLを持ちたい
<tag1>a</tag1>
<tag1>b</tag1>
<tag1>c</tag1>
は、JAXBと、それは可能ですか?
ありがとうございます。
Java側の順序付けされたコレクションを使用します。
ルート
tag1
プロパティがSortedSet
です。あなたがTreeSet
を作成するときは、Comparator
に渡すことができます。
package forum9096805;
import java.util.*;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Root {
private SortedSet<String> tag1 = new TreeSet<String>();
public SortedSet<String> getTag1() {
return tag1;
}
public void setTag1(SortedSet<String> tag1) {
this.tag1 = tag1;
}
}
デモ
package forum9096805;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);
Root root = new Root();
root.getTag1().add("b");
root.getTag1().add("c");
root.getTag1().add("a");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}
}
出力
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<tag1>a</tag1>
<tag1>b</tag1>
<tag1>c</tag1>
</root>
質問は次のようになります。それはXSDで可能です( XML Schmea)?答えはです。です。しかし、Listの実装や配列のような順序付けされたコレクションを使用することで、XMLインスタンスにアルファベット順のデータが含まれていることを確認できます。
Tichodromaの答えが働いていると仮定すると、**可能な**スキーマのコレクションの種類を変更します。例[here](http://blog.bdoughan.com/2011/01/jaxb-and-choosing-list-implementation.html) – sergio91pt
@ sergio91ptスキーマ内に(コンテンツに基づいて)順序付けられたコレクションの概念はありません。リンクは、IとTichodromaが提供する提案をどのように実装するのかを説明しています。 –
+1 - 私は例を追加してもらえますか? –
@BlaiseDoughan確かに、進んでください:)私はあなたの仕事のためのアップボトムを得ることができます:)私は私の毎日の評判キャップを超えていない限り。 –