我正在尝试动态解组xml文件,因此在实例化我的模型时需要更改@XmlRootElement和@XmlElement注释。
我已经看到了一些如何做到这一点的例子,但我不清楚如何实现它们以及它们是否是最好的方法。例如。 Modify a class definition's annotation string parameter at runtime
//更新 我需要动态地解组产品的源,它们将根据用户指定的映射进行解组,这将由模型使用。我不知道如何动态更改的其中一个部分是xmlElements注释。如果我可以动态修改它,那么剩下的就可以了。
用户将为他们希望使用的每个产品Feed完成产品映射模型。使用映射模型对每个产品馈送进行解组,映射模型具有设定的标准,例如,用户可以映射到的名称,网址。然后,这将用于在解组时填充Products模型。
典型流程:
UnmarshallAll方法
获取所有产品Feed(包含详细信息或xml网址,以及映射ID)
对于每个产品进纸 - 从产品Feed的ID获取映射模型并设置xml文件的URL。使用url和productFeedMapping调用XmlUnmarshalling方法。
在解组方法中,我需要生成准备好进行解组的Products模型,但是解组的注释需要使用productFeedMapping中的数据进行更改。
我需要动态修改的模型如下:
//need to dynamically change these
@XmlRootElement(name = "products")
@XmlAccessorType (XmlAccessType.FIELD)
public class Products
{
//need to dynamically change these
@XmlElement(name = "product")
private List<Product> products = null;
public List<Product> getProducts() {
return products;
}
public void setProducts(List<Product> products) {
this.products = products;
}
}
我将在此方法中实例化它:
//unmarshall xml method
private Map<String, List<String>> unmarshallXml(URL url, ProductFeedMapping productFeedMapping) {
//delcare the map
Map<String, List<String>> map = new HashMap<String, List<String>>();
//INSTANTIATE PRODUCT MODEL HERE
}