2012-04-03 61 views
2

在jaxb-impl中,我可以得到一個RuntimeTypeInfoSet對象,它可以用來從xml元數據映射到適當的java反射數據。什麼是moxy的等價物。moxy:什麼是RuntimeTypeInfoSet相當於

更新:我的用例是找到一個映射到元素名稱的屬性。我當然可以通過使用java反射來實現,但這很麻煩。

回答

2

說明:我是EclipseLink JAXB (MOXy)的領導和JAXB 2 (JSR-222)專家組的成員。

的EclipseLink JAXB(MOXY)不具有直接等同於下面的類:

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

似乎類的目的是提供給內省的裝置JAXB爲特定模型映射元數據。我已經打開了以下增強功能請求,以將此功能添加到MOXY。

有被設定本地對象(ProjectDescriptor,並Mapping),該保持MOXY到下方的蓋來表示元數據。如果你可以擴大你的問題來表明你在找什麼,我可以幫你找到它。


UPDATE

UPDATE:我的使用情況發現,映射到一個元素 名稱的屬性。我當然可以通過使用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 
+0

謝謝你的詳細解答! – IttayD 2012-04-11 04:05:50

相關問題