moxy:RuntimeTypeInfoSet的等价物

时间:2012-04-03 11:35:46

标签: jaxb eclipselink moxy

在jaxb-impl中,我可以获得一个RuntimeTypeInfoSet对象,该对象可用于从xml元数据映射到相应的java反射数据。什么是moxy的等价物。

更新:我的用例是找到一个映射到元素名称的属性。我当然可以通过使用java反射来实现它,但它很麻烦。

1 个答案:

答案 0 :(得分:2)

注意:我是EclipseLink JAXB (MOXy)主管,是JAXB 2 (JSR-222)专家组的成员。

EclipseLink JAXB(MOXy)没有直接等效于以下类:

  • com.sun.xml.bind.v2.model.runtime.RuntimeTypeInfoSet

该类的目的似乎是提供一种内省特定模型的JAXB映射元数据的方法。我已经向MOXy打开了以下增强请求以添加此功能。

MOXy在封面下方保留了一组本机对象(ProjectDescriptorMapping)来表示元数据。如果您可以扩展您的问题以表明您在寻找什么,我可以帮助您找到它。


<强>更新

  

更新:我的用例是找到一个映射到元素的属性   名称。我当然可以通过使用java反射来实现它,但确实如此   繁琐。

我为延迟回复而道歉。我没有注意到您的问题已经更新了更多信息:

<强>客户

我们将使用该类并获取与last-name元素对应的属性名称。

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;
    }

}

<强>演示

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());
    }

}

<强>输出

lastName
相关问题