gpt4 book ai didi

java - 可以从 List 生成平面 XML 结构的 XStream 自定义转换器?

转载 作者:搜寻专家 更新时间:2023-11-01 00:55:28 24 4
gpt4 key购买 nike

我正在使用 XStream 并且有一个包含如下字段的类:

private Map<String, String> data;

我想像这样生成 XML 输出:

<key1>test data</key1>
<key2>test data</key2>
<key3>test data</key3>

所以我希望 map 键成为元素。 mapvalue 是 XML 值,我不希望 XML 包装在元素中,例如 <data></data> .谁能指出执行此操作或类似操作的示例代码?

更新

这只是一个片段,还有一个根元素。

更新 2

我在下面发布的自定义转换器代码几乎可以工作。我得到一个平面结构,但我需要移除外部元素。对此有什么想法吗?

//this is the result need to remove <data>
<data>
<key1>test data</key1>
<key2>test data</key2>
<key3>test data</key3>
</data>

这是代码

public class MapToFlatConverter implements Converter{
public MapToFlatConverter() {
}

@Override
public boolean canConvert(Class type) {
return Map.class.isAssignableFrom(type);
}

@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
Map<String, String> map = (Map<String, String>) source;
for (Map.Entry<String, String> entry : map.entrySet()) {
writer.startNode(entry.getKey());
writer.setValue(entry.getValue().toString());
writer.endNode();
}
}

@Override
public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
//not needed at this time

return null;
}

最佳答案

我能够让它工作。以下 SO 帖子是我最终所做的:custom converter in XStream。我需要从 ReflectionConverter 扩展:

下一篇文章也有帮助,尽管当我尝试这种方法时,context.convertAnother() 方法似乎不起作用。所以我切换到第一个帖子中的方法。

Xstream Implicit Map As Attributes to Root Element

关于java - 可以从 List 生成平面 XML 结构的 XStream 自定义转换器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33500854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com