基本的には、この質問の逆をやりたいと思っています。
Microsoft の Bing バッチ ジオコード サービスから XML を取得しています。一部の要素は次のようになっています (ここから盗み出されています)。
<DataflowJob>
<Id>5bf10c37df944083b1879fbb0556e67e</Id>
<Link role="self">https://spatial.virtualearth.net /REST/v1/dataflows/Geocode/5bf10c37df944083b1879fbb0556e67e</Link>
<Link role="output" name="succeeded">https://spatial.virtualearth.net/REST/v1/dataflows/Geocode/5bf10c37df944083b1879fbb0556e67e/output/succeeded</Link>
<Link role="output" name="failed">https://spatial.virtualearth.net/REST/v1/dataflows/Geocode/5bf10c37df944083b1879fbb0556e67e/output/failed</Link>
<Description>Xml</Description>
<Status>Completed</Status>
...
</DataflowJob>
<Link>
要素には属性とテキスト コンテンツがあることに注意してください。私がデシリアライズしようとしている関連するPOJOクラスは次のとおりです。
class DataflowJob
{
String Id;
@XStreamImplicit
List<Link> Links;
String Description;
Status Status;
...
}
class Link
{
@XStreamAsAttribute
Role role;
@XStreamAsAttribute
Name name;
String url;
}
私の現在の構成 (クラスはエイリアス化され、属性は自動検出され、その他すべて) では、XStream は要素のName
およびRole
属性を適切に逆シリアル化します<Link>
が、実際のリンク テキスト自体は逆シリアル化しません。
XStream でそのテキストをオブジェクトのString
フィールドにデシリアライズするにはどうすればよいですか?Link
このためだけに、リンクテキスト*の周りに新しい要素を手動で挿入する必要はありません。
*例: 置き換え
<Link role="self">
https://long/url/here
</Link>
と
<Link role="self">
<url>https://long/url/here</url>
</Link>