Java StAX—是否可以将XML节点转换为HashMap(或具有HashMap的POJO类)

Java StAX—是否可以将XML节点转换为HashMap(或具有HashMap的POJO类),java,xml,streaming,Java,Xml,Streaming,我正在使用流式XML API解析一个巨大的XML文件(大小~10 M,#objects~100K) 是否可以转换XML节点,如- <A> <C>b </C> <D>c </D> <E>d </E> <F>e </F> <G>f </G> </A> 如果你知道根元素的名称,你可以用Jackson这样做。您需要这样的POJO: @JacksonXmlRoo

我正在使用流式XML API解析一个巨大的XML文件(大小~10 M,#objects~100K)

是否可以转换XML节点,如-

<A>
<C>b </C>
<D>c </D>
<E>d </E>
<F>e </F>
<G>f </G>
</A>

如果你知道根元素的名称,你可以用Jackson这样做。您需要这样的POJO:

@JacksonXmlRootElement(localName = "A")
public static class POJO{

    private Map<String,String> map = new TreeMap<String,String>();

    @JsonAnyGetter
    public Map<String, String> get() {
        return map;
    }

    @JsonAnySetter
    public void set(String name, String value) {
        map.put(name, value);
    }

}
    ObjectMapper xmlmapper = new XmlMapper();        
    POJO p2 = xmlmapper.readValue(xml,POJO.class);

我刚刚在我的博客上发布了完整的代码:(它也适用于JSON)

也许有些东西已经改变了,但是使用Jackson 2.4.4,我可以轻松地将XML文档读入地图,而无需创建POJO/知道根元素名称:

ObjectMapper xmlmapper = new XmlMapper();        
Map setup = xmlmapper.readValue(setupFile, Map.class);

我打赌你可以用Jackson XmlMapper来完成。你需要一个带有地图的POJO a。这可以通过jackson完成,但前提是你知道根元素的名称。你预先知道根元素的名称吗?是的,我知道根元素。。但是我使用的是流式XML API,因为我的XML文件非常大。。请看编辑……啊,我得查一下。
ObjectMapper xmlmapper = new XmlMapper();        
Map setup = xmlmapper.readValue(setupFile, Map.class);