SORU
15 EKİM 2010, Cuma


JAXB: < suya marshall göster nasıl yapılır;anahtar>&;/değer lt anahtar>

Soru Göster sıralanırken JAXB hakkında aşağıdaki gibi bir yapı içine bir Harita marhsall için nasıl örnekler var

<map>
  <entry>
    <key> KEY </key>
    <value> VALUE </value>
  </entry>
  <entry>
    <key> KEY2 </key>
    <value> VALUE2 </value>
  </entry>
  <entry>
  ...
</map>

Aslında, bu doğal JAXB tarafından desteklenir. İhtiyacım olan şey, ancak, anahtar öğe adı ve değeri içeriğinin bulunduğu XML:

<map>
  <key> VALUE </key>
  <key2> VALUE2 </key2>
 ...
</map>

Göster benim adaptör uygulama geliştiriciler JAXB (https://jaxb.dev.java.net/guide/Mapping_your_favorite_class.html) tarafından önerilen şekilde başarılı olmak istiyorum, o dinamik öznitelik ismi:) bilmiyordum

Bunun için herhangi bir çözüm var mı?

P. S. şu Anda elimde oluşturmak için özel bir kapsayıcı sınıf için her tipik set anahtar-değer çiftleri istiyorum marshall XML - çalışıyor, ama ben oluşturmak için çok fazla bu yardımcı kaplar.

CEVAP
4 Ocak 2011, Salı


verilen kod işe yaramadı. Harita için başka bir yol buldum :

MapElements :

package com.cellfish.mediadb.rest.lucene;

import javax.xml.bind.annotation.XmlElement;

class MapElements
{
  @XmlElement public String  key;
  @XmlElement public Integer value;

  private MapElements() {} //Required by JAXB

  public MapElements(String key, Integer value)
  {
    this.key   = key;
    this.value = value;
  }
}

MapAdapter :

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

import javax.xml.bind.annotation.adapters.XmlAdapter;

class MapAdapter extends XmlAdapter<MapElements[], Map<String, Integer>> {
    public MapElements[] marshal(Map<String, Integer> arg0) throws Exception {
        MapElements[] mapElements = new MapElements[arg0.size()];
        int i = 0;
        for (Map.Entry<String, Integer> entry : arg0.entrySet())
            mapElements[i  ] = new MapElements(entry.getKey(), entry.getValue());

        return mapElements;
    }

    public Map<String, Integer> unmarshal(MapElements[] arg0) throws Exception {
        Map<String, Integer> r = new HashMap<String, Integer>();
        for (MapElements mapelement : arg0)
            r.put(mapelement.key, mapelement.value);
        return r;
    }
}

Bu rootElement :

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

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

@XmlRootElement
public class Root {

    private Map<String, Integer> mapProperty;

    public Root() {
        mapProperty = new HashMap<String, Integer>();
    }

    @XmlJavaTypeAdapter(MapAdapter.class)
    public Map<String, Integer> getMapProperty() {
        return mapProperty;
    }

    public void setMapProperty(Map<String, Integer> map) {
        this.mapProperty = map;
    }

}

Bu sitede kod buldum : http://www.developpez.net/forums/d972324/java/general-java/xml/hashmap-jaxb/

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • akalyne

    akalyne

    13 Mayıs 2009
  • alexis gillis

    alexis gilli

    23 HAZİRAN 2011
  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009