将XML转换为Java映射<;字符串,整数>;

将XML转换为Java映射<;字符串,整数>;,java,xml,file-io,xstream,Java,Xml,File Io,Xstream,我正在尝试将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>

我正在尝试将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>
   <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>
这是一篇相关文章,但我的问题是增加了一层复杂性,因为我的XML将字符串与int匹配,不幸的是Java映射不能使用int,它必须使用整数(这非常令人沮丧):


如果您能提供任何帮助,我们将不胜感激。提前谢谢

您需要注册MapConverter,它是实现转换器的类

registerConverter(新的MapEntryConverter())

希望能帮助库将xml转换为hashmap,反之亦然。我是项目的维护者

代码示例:

import com.github.underscore.lodash.U;

public class Main {
    public static void main(String[] args) {
      String 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>";

    String result = U.fromXmlWithoutAttributes(xml).toString();
    // {Durapipe=1, EXPLAIN=2, woods=2, hanging=3, hastily=2, localized=1, Schuster=5, regularize=1, LASR=1, LAST=22, Gelch=2, Gelco=26}

    }
}
导入com.github.underline.lodash.U;
公共班机{
公共静态void main(字符串[]args){
字符串xml=“”
+ ""
+ "   1"
+ "   2"
+ "   2"
+ "   3"
+ "   2"
+ "   1"
+ "   5"
+ "   1"
+ "   1"
+ "   22"
+ "   2"
+ "   26"
+ "";
字符串结果=U.fromXmlWithoutAttributes(xml).toString();
//{Durapipe=1,EXPLAIN=2,woods=2,hanging=3,hastly=2,localized=1,Schuster=5,regularize=1,LASR=1,LAST=22,Gelch=2,Gelco=26}
}
}

等等……我很困惑。什么是MapEntryConverter?它似乎不在XStream中…我在XStream文档中找到了MapConverter,但不是MapEntryConverter。只是开玩笑而已。回答:我们在这里互相帮助。只要我的回答解决了你的问题,我就会笑:)
Exception in thread "main" com.thoughtworks.xstream.mapper.CannotResolveClassException: root
at com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:79)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.DynamicProxyMapper.realClass(DynamicProxyMapper.java:55)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.PackageAliasingMapper.realClass(PackageAliasingMapper.java:88)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.ClassAliasingMapper.realClass(ClassAliasingMapper.java:79)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.ArrayMapper.realClass(ArrayMapper.java:74)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:71)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47)
at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1185)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1169)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1133)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1075)
at ProductAttributeExtractor.main(ProductAttributeExtractor.java:23)
import com.github.underscore.lodash.U;

public class Main {
    public static void main(String[] args) {
      String 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>";

    String result = U.fromXmlWithoutAttributes(xml).toString();
    // {Durapipe=1, EXPLAIN=2, woods=2, hanging=3, hastily=2, localized=1, Schuster=5, regularize=1, LASR=1, LAST=22, Gelch=2, Gelco=26}

    }
}