[英]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.