基本上,我想做这个问题的反面。
我正在从 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>