Hinweis: Ich bin die EclipseLink JAXB (MOXy) Leitung und Mitglied der JAXB 2 (JSR-222) Expertengruppe.
Eclipse JAXB (moxy) keine direkte Entsprechung zu der folgenden Klasse:
com.sun.xml.bind.v2.model.runtime.RuntimeTypeInfoSet
sie den Zweck dieser Klasse wird angezeigt wird, ein Mittel bereitzustellen, die introspect JAXB-Mapping-Metadaten für ein bestimmtes Modell. Ich habe die folgende Erweiterungsanforderung für das Hinzufügen dieser Funktion zu MOXy geöffnet.
gibt es nativer Objekte gesetzt (Project
, Descriptor
und Mapping
) daß moxy auf unterhalb hält die Abdeckungen, die Metadaten zu repräsentieren. Wenn Sie Ihre Frage erweitern können, um anzugeben, wonach Sie suchen, kann ich Ihnen helfen, sie zu finden.
UPDATE
UPDATE: mein Anwendungsfall eine Eigenschaft ist, zu finden, die ein Element zuordnet Namen. Ich kann es natürlich tun, indem ich Java-Reflexion verwende, aber es ist umständlich.
Ich entschuldige mich für die Verzögerung bei der Beantwortung. Ich hatte nicht bemerkt, dass Ihre Frage mit weiteren Informationen wurde aktualisiert:
Kunden
wir die Klasse verwenden werden und den Namen der Eigenschaft erhalten zum last-name
Element entspricht.
package forum9992419;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Customer {
private String firstName;
private String lastName;
@XmlElement(name="first-name")
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@XmlElement(name="last-name")
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
Demo
package forum9992419;
import javax.xml.bind.JAXBContext;
import org.eclipse.persistence.descriptors.ClassDescriptor;
import org.eclipse.persistence.internal.sessions.AbstractSession;
import org.eclipse.persistence.jaxb.JAXBHelper;
import org.eclipse.persistence.mappings.DatabaseMapping;
import org.eclipse.persistence.oxm.XMLField;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Customer.class);
AbstractSession session = JAXBHelper.getJAXBContext(jc).getXMLContext().getSession(Customer.class);
ClassDescriptor descriptor = session.getClassDescriptor(Customer.class);
XMLField xmlField = new XMLField("last-name/text()");
DatabaseMapping mapping = descriptor.getObjectBuilder().getMappingForField(xmlField);
System.out.println(mapping.getAttributeName());
}
}
Ausgabe
lastName
Vielen Dank für die ausführliche Antwort! – IttayD