gpt4 book ai didi

java - 使用 XML 初始化 HashMap

转载 作者:行者123 更新时间:2023-12-01 09:58:24 25 4
gpt4 key购买 nike

有没有办法通过XML初始化HashMap?假设我有这个 data.xml

<company>
<employee id=1>
<name>Joe</name>
</employee>
<employee id=2>
<name>Mark</name>
</employee>
<employee id=3>
<name>Bill</name>
</employee>
</company>

我想映射员工的 ID 和姓名。

最佳答案

请您使用XStream框架并按照此示例进行操作

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;

import java.util.AbstractMap;
import java.util.HashMap;
import java.util.Map;

public class Test {

public static void main(String[] args) {

Map<String,String> map = new HashMap<String,String>();
map.put("name","chris");
map.put("island","faranga");

XStream magicApi = new XStream();
magicApi.registerConverter(new MapEntryConverter());
magicApi.alias("root", Map.class);

String xml = magicApi.toXML(map);
System.out.println("Result of tweaked XStream toXml()");
System.out.println(xml);

Map<String, String> extractedMap = (Map<String, String>) magicApi.fromXML(xml);
assert extractedMap.get("name").equals("chris");
assert extractedMap.get("island").equals("faranga");

}

public static class MapEntryConverter implements Converter {

public boolean canConvert(Class clazz) {
return AbstractMap.class.isAssignableFrom(clazz);
}

public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {

AbstractMap map = (AbstractMap) value;
for (Object obj : map.entrySet()) {
Map.Entry entry = (Map.Entry) obj;
writer.startNode(entry.getKey().toString());
Object val = entry.getValue();
if ( null != val ) {
writer.setValue(val.toString());
}
writer.endNode();
}

}

public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {

Map<String, String> map = new HashMap<String, String>();

while(reader.hasMoreChildren()) {
reader.moveDown();

String key = reader.getNodeName(); // nodeName aka element's name
String value = reader.getValue();
map.put(key, value);

reader.moveUp();
}

return map;
}

}

}

关于java - 使用 XML 初始化 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006852/

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