我试图将XML代码转换为Java Map。 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>
<Schuster type="int">5</Schuster>
<regularize type="int">1</regularize>
<LASR type="int">1</LASR>
<LAST type="int">22</LAST>
<Gelch type="int">2</Gelch>
<Gelco type="int">26</Gelco>
.......
</root>
我目前使用的Java代码如下所示:
XStream xstream = new XStream();
Map<String, Integer> englishCorpusProbDist;
englishCorpusProbDist = (Map<String, Integer>)xstream.fromXML(new File("locationonmycomputer/frequencies.xml"));
我得到了一个例外:
Exception in thread "main" com.thoughtworks.xstream.mapper.CannotResolveClassException: root
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:79)
有人建议我使用以下内容注册我的转换器:
xstream.registerConverter(new MapEntryConverter());
问题在于MapEntryConverter似乎不是XStream中的一个类,我对这个人的建议感到困惑。
这是我之前提出的一个问题,问及此人的回答: Converting XML into Java Map<String, Integer>
非常感谢任何帮助。提前谢谢!
答案 0 :(得分:2)
您实际上需要实现自己的*MapConverter
扩展Converter
;没有名为MapConverter
的实际课程,这也是我一段时间以来一直困惑的事情。
查看我已实施并拥有Github的内容。我希望这会让事情变得更容易理解。在编组和解组与相应标记相关的数据时,您基本上必须告诉XStream
该做什么。