簡體   English   中英

Jaxb:無需修改JAXB Java類即可附加請求XML的字段

[英]Jaxb : Append field of Request XML without modfying JAXB java class

我正在將JAXB 2.0用於使用RestFul Webservices的應用程序開發。 現在,請求中有一個修改,即我將在請求XML中獲取另一個文件/變量。

<Root Id="567" att="758" />   

修改后的請求將是

 <Root Id="567" att="758" anotherfiledadded ="kiran" />   

我的問題是,是否可以在UserData類中自動附加該字段(anotherfiledadded)(無需修改UserData?)

下面是我的UserData類

@XmlRootElement(name = "Root")
@XmlAccessorType(XmlAccessType.FIELD)

public class UserData {

    @XmlAttribute
    private String Id;

    @XmlAttribute
    private String att;

// getters and setters 

您可以嘗試在運行時使用javassist添加該字段。 但是...看起來您還需要添加Annotation @XmlAttribute ,但我不知道javassist是否允許您添加注釋...無論如何,請嘗試一下。

請參閱: Javassist添加

您可以使用XSLT將屬性應用到XML文檔中。 自Java SE 6起,以下所有類都在JDK / JRE中可用。

JAXBContext jc = JAXBContext.newInstance(UserData.class); 
JAXBSource source = new JAXBSource(jc, myUserData);

StreamResult result = new StreamResult(System.out);

TransformerFactory tf = TransformerFactory.newInstance();
StreamSource xslt = new StreamSource("addMyAttribute.xslt");
Transformer t = tf.newTransformer(xslt);
t.transform(source, result);

如果要使用JAX-RS實現RESTful服務,則可以通過MessageBodyWriter插入以下邏輯:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM