私は自分のXStreamの仕事を「ズームイン」しすぎるかもしれないと思いますが、さまざまな大きな複雑なオブジェクトを含むXMLストリームをマーシャリングしようとしています。 、タグの内容をXStreamで読み取る
今import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
public class TypedString {
@XStreamAsAttribute
private String type;
private String value;
public TypedString(String type, String value) {
this.type = type;
this.value = value;
}
// getters omitted
}
:だから私はそうのように、type属性を持つ文字列の概念を包むために、「TypedString」オブジェクトを作成し
<name type="string">My Name</name>
<speed type="dice">2d6</speed>
次のようなタグをたくさん持っている傾向がありますこれは何かが欠落しているに違いないことを知っています - タグの内容を使って "value"変数をどのように設定することができますか?(例:firs上記の例では、typeは "string"で、値は "My Name"です)。
public class TypedStringTest {
private XStream xStream;
@Before
public void setUp() {
xStream = new XStream();
xStream.processAnnotations(TypedString.class);
xStream.alias("name", TypedString.class);
}
@Test
public void testBasicUnmarshalling() {
TypedString typedString = (TypedString) xStream.fromXML("<name type=\"string\">Name</name>");
assertEquals("string", typedString.getType());
assertEquals("Name", typedString.getValue());
}
}
二アサーションに失敗します。
私はこのための簡単なユニットテストを書きました。TypedStringクラスに追加する必要があるアノテーションがありますか?または、ここで大きく拡大してしまったことがありますか(たとえば、これらのタグを含むクラスのアノテーションですべて行う必要があります)。 @XStreamAsAttributeアノテーションは、親タグから使用できるようには見えませんでした。適用されたタグを表すオブジェクトで定義する必要がありました。それで、私はそうでなければ賛美された弦を作った。私はXStreamが暗黙の援助なしにマーシャルしなければならないと感じる。
一言で言えば、どこで迷子になったのですか?
答えのためにサイトの周りを見て、私が見ている最高のコンバータです - 実際にXStreamの注釈でこれを行う方法はありませんか? – Phantomwhale