2016-06-17 6 views
1

Wenn Sie das Moxy verwenden, um das Beispiel xml zum Kind unterzuordnen, kann es den Namen immer nicht erhalten. Es ist immer null.Moxy kann das Unterklassenfeld, das die Oberklasse übersteuert, nicht überschreiben

XML-Beispiel

<?xml version="1.0" encoding="UTF-8"?> 
<child> 
    <name value="test"/> 
</child> 

Sample-Klasse

public class Parent { 

    private String name; 

    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
} 

@XmlRootElement 
public class Child extends Parent { 

    @Override 
    @XmlPath("name/@value") 
    public String getName() { 
     return super.getName() == null ? "" : super.getName(); 
    } 

    @Override 
    public void setName(String name) { 
     super.setName(name); 
    } 
} 


JAXBContext jc2 = JAXBContext.newInstance(Child.class); 
Unmarshaller unmarshaller = jc2.createUnmarshaller(); 
Child child = (Child) unmarshaller.unmarshal(new File("d:\\sample.xml")); 

Wie kann ich diesen Wert zu erhalten, wenn ich keine Änderung auf der übergeordneten Klasse machen.

Danke,

Antwort

1

Nach dig mit http://blog.bdoughan.com und Stackoverflow.

OK, fand ich endlich diese auf Stackoverflow

<?xml version="1.0"?> 
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" 
    version="2.6.0"> 
    <java-types> 
     <java-type name="com.abc.Parent" xml-transient="true" /> 
    </java-types> 
</xml-bindings> 

mit Code

Map<String, Source> metadata = new HashMap<String,Source>(); 
    metadata.put("com.abc", new StreamSource(Volume.class.getClassLoader().getResourceAsStream("sample.xml"))); 
    Map<String,Object> properties = new HashMap<String,Object>(); 
    properties.put(JAXBContextProperties.OXM_METADATA_SOURCE, metadata); 
    JAXBContext jc2 = JAXBContext.newInstance(new Class[] {Child.class}, properties); 

Dann könnte der Wert in Super get/set.

Wenn Sie den Maven verwenden, kann dieser Artikel Ihnen für den Standort der XMLbinding-Datei helfen.

How do I solve EclipseLink's (MOXy) 'getting property "eclipselink.oxm.metadata-source" is not supported'?

Verwandte Themen