Java 如何序列化映射<;字符串,字符串>;使用简单XML?

Java 如何序列化映射<;字符串,字符串>;使用简单XML?,java,simple-framework,Java,Simple Framework,您将如何使用序列化地图,使其看起来像: <elem foo="value">key</elem> @ElementMap(entry="property", value="value", attribute=true, inline=true) private Map<String, String> map; 键 而不是正常的 <elem foo="key">value</elem> 值 (地图是一对多的,因为这将由人类编辑,

您将如何使用序列化地图,使其看起来像:

<elem foo="value">key</elem>
@ElementMap(entry="property", value="value", attribute=true, inline=true)
private Map<String, String> map;
而不是正常的

<elem foo="key">value</elem>
(地图是一对多的,因为这将由人类编辑,我希望它更清晰。)


[EDIT]:无法修复。

您是否尝试过以下方法:

<elem foo="value">key</elem>
@ElementMap(entry="property", value="value", attribute=true, inline=true)
private Map<String, String> map;
@ElementMap(entry=“property”,value=“value”,attribute=true,inline=true)
私人地图;

或者某种组合,即使用的其他属性也是?

是的,事实上我就是这样做的,但是设置
attribute=true
会将键设置为属性,而不是值。所以使用value=“value”而不是key=“key”不会将它们按相反的顺序排列?如果是这样的话,我认为这是一个错误。要使其仍然有效,您需要定义自己的模板(请参阅文档)或作为一种替代方法来创建自己的@ElementMap注释(例如,您可以将其称为@ElementMapReversed,以使其反向(直到团队修复该错误)。我不认为
key
value
参数是这样使用的。这些参数定义了
inline=false
时调用xml元素的内容。例如:
@ElementMap(entry=“spam”,value=“foo”,key=“bar”)
将为每个K,V对生成
keyvalue
。是的,当inline=false和inline=true时,它们应表示所述元素的属性名称。由于只使用value=“value”,因此仅内联该部分是合乎逻辑的,因此键将保留为文本。如果value=“value”和key=“key”将出现,结果应该是:。我认为这将是“简单的”,因为开发人员推销他们的框架:)。不,它不是那样工作的<代码>内联将值保留为文本。属性只引用键,而不是值。你自己试试看。您仍然会得到
value2值
(以上是实际输出,其中
inline=true