使用Jaxb编组如何在运行时覆盖XML元素名称

时间:2016-01-19 16:18:35

标签: spring jaxb

在我的代码中,我有一个类,它从REST CALL中填充,如下所示:

    RestTemplate restTemplate = new RestTemplate();
    String JSONStr = restTemplate.getForObject(urlStr, String.class);
    Gson gson = new Gson(); 
    Products items = gson.fromJson(JSONStr, Products.class);

然后我将列表写为XML

         JAXBContext jaxbContext = JAXBContext.newInstance(ProductsList.class);      
     Marshaller productMarshaller2 = jaxbContext.createMarshaller();
     productMarshaller2.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
     OutputStream outputStream = new FileOutputStream("xml\\products.xml");

     for (int index = 0; index < items.size(); index++){
            System.out.println("Index = " + index);
         ProductsList productList = items.get(index);    
         productMarshaller2.marshal(productList, outputStream);
     }
     outputStream.close();

这一切都很好,并提供了预期的输出。我遇到的问题是,我得到的JSON的字段名称如“atr_203948”,我需要使用“color”这样的名称 - 但不能提前知道名称之间的映射。在运行时,我必须执行数据库查找以获取当前映射。 DB查找很容易,我有代码创建一个带有oldName,newName对的HashMap,但我不知道将这些知识注入到Marshaller的输出中。任何帮助将不胜感激。

0 个答案:

没有答案