gpt4 book ai didi

java - 使用 XStream 将 XML 转换为 Java Map

转载 作者:行者123 更新时间:2023-12-01 12:41:01 26 4
gpt4 key购买 nike

我正在将 XML 代码转换为 Java 映射。 XML 将大量随机单词与一个数字(概率分布)进行匹配,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<root>
<Durapipe type="int">1</Durapipe>
<EXPLAIN type="int">2</EXPLAIN>
<woods type="int">2</woods>
<hanging type="int">3</hanging>
<hastily type="int">2</hastily>
<localized type="int">1</localized>
.......
</root>

我正在尝试使用 XStream 来实现这一点。这是我的主程序当前使用的 Java 代码:

    XStream xstream = new XStream();
Map<String, Integer> englishCorpusProbDist;
xstream.registerConverter(new MapEntryConverter());
englishCorpusProbDist = (Map<String, Integer>)xstream.fromXML(new File("C:/Users/David Naber/Documents/IREP Project/frequencies.xml"));

这是我的 MapEntryConverterClass:

public class MapEntryConverter implements Converter {
public boolean canConvert(Class clazz) {
return Map.class.isAssignableFrom(clazz);
}

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

public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
Map<String, Integer> map = new HashMap<String, Integer>();

while (reader.hasMoreChildren()) {
reader.moveDown();
map.put(reader.getNodeName(), reader.getValue());
reader.moveUp();
}
return map;
}
}

我在上面的函数中,在“map.put(reader.getNodeName(), reader.getValue());”行上遇到错误。错误说:“方法 put(String, Integer)类型 Map 中的参数不适用于参数(String、String)。”

所以我真的有两个问题。首先,为什么会发生这个错误以及如何修复它?其次,我还需要实现什么才能最终让 XStream 将其转换为 XML?

非常感谢任何帮助。预先感谢您!

最佳答案

是的,错误是正确的reader.getValue()给出的是String,您必须将其类型转换为Integer

更改以下代码

map.put(reader.getNodeName(), reader.getValue());

map.put(reader.getNodeName(), new Integer(reader.getValue()));

关于java - 使用 XStream 将 XML 转换为 Java Map<String, Integer>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097491/

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