1

RestFulWebサービスを使用しているアプリケーション開発にJAXB2.0を使用しています。これで、リクエストに変更が加えられました。つまり、リクエスト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 
4

2 に答える 2

1

javassistを使用して、実行時にフィールドを追加してみることができます。しかし...アノテーション@XmlAttributeも追加する必要があるようですが、 javassistでアノテーションを追加できるかどうかはわかりません...とにかく試してみてください。

参照:Javassist Add

于 2012-08-06T13:49:10.057 に答える
0

XSLTを使用して、XMLドキュメントに属性を適用できます。以下のすべてのクラスは、JavaSE6以降の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:を介してこのロジックをプラグインできます。

于 2012-08-06T15:02:24.887 に答える