1

我将 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 
4

2 回答 2

1

您可以尝试在运行时使用javassist添加该字段。但是......看起来你还需要添加注释@XmlAttribute,我不知道javassist是否允许你添加注释......无论如何试一试。

请参阅:Javassist 添加

于 2012-08-06T13:49:10.057 回答
0

您可以使用 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

于 2012-08-06T15:02:24.887 回答