Java 如何为一组数据类型列表编写自定义JAXB适配器
我有一个需要通过JAXB解析的对象引用,我需要为此编写一个自定义适配器。参考文献是Java 如何为一组数据类型列表编写自定义JAXB适配器,java,xml,jaxb,marshalling,Java,Xml,Jaxb,Marshalling,我有一个需要通过JAXB解析的对象引用,我需要为此编写一个自定义适配器。参考文献是 Set<List<CustomClass>> 我需要通过Jersey API服务返回1级折扣,即我的折扣 类文件3 import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; import javax.ws.rs.FormParam; import javax.ws.rs.Produces; imp
Set<List<CustomClass>>
我需要通过Jersey API服务返回1级折扣,即我的折扣
类文件3
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.Produces;
import javax.ws.rs.Path;
import javax.ws.rs.POST;
import javax.ws.rs.core.Context;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
@Path("/discount")
public class DiscountService{
@POST
@Produces("application/xml")
@Path("/couponCartValid")
public String getDiscountsXML(){
MyDiscounts discount=new MyDiscounts();
try{
Marshaller jaxbMarshaller =jaxbContext.createMarshaller();
StringWriter writerxmlObj = new StringWriter();
jaxbMarshaller.marshal(order, writerxmlObj);
String xml = String.valueOf(writerxmlObj);
xml = xml.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
return xml;
}catch(Exception e){
return e.printStackTrace();
}
}
import javax.servlet.http.HttpServletRequest;
导入javax.ws.rs.Consumes;
导入javax.ws.rs.FormParam;
导入javax.ws.rs.products;
导入javax.ws.rs.Path;
导入javax.ws.rs.POST;
导入javax.ws.rs.core.Context;
导入javax.xml.bind.JAXBContext;
导入javax.xml.bind.JAXBException;
导入javax.xml.bind.Marshaller;
导入javax.xml.bind.Unmarshaller;
@路径(“/折扣”)
公共类折扣服务{
@职位
@生成(“应用程序/xml”)
@路径(“/couponCartValid”)
公共字符串getDiscountsXML(){
我的折扣=新的我的折扣();
试一试{
Marshaller jaxbMarshaller=jaxbContext.createMarshaller();
StringWriter writerxmlObj=新StringWriter();
jaxbMarshaller.marshall(命令,writerxmlObj);
String xml=String.valueOf(writerxmlObj);
xml=xml.replaceAll(“\\”,“”)。trim();
返回xml;
}捕获(例外e){
返回e.printStackTrace();
}
}
请分享一些代码,也许还有一个示例数据-否则你将很难得到好的/相关的答案。一些细节,例如HttpService参数,由于它们对讨论不重要,因此被省略了。你希望从集合
中获得什么XML?这是一个非常奇怪的数据结构,集合使其无序-那么,这个集合中包含的列表(以任何顺序)的语义是什么呢?想象一下,在现实世界中,我必须将一些折扣组合在一起。在这里,我必须有一个代表一个组合的折扣链接列表。然后,将有一组折扣组合到一个集合中。本质上,我会We’我们有一套折扣,这些折扣将以组合形式提供。
import java.util.*;
@XmlRootElement
@XmlAccessorType(value = XmlAccessType.FIELD)
public class JobServiceDiscountsPOJO{
int discountAmount=0;
//constructors and other methods
}
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.Produces;
import javax.ws.rs.Path;
import javax.ws.rs.POST;
import javax.ws.rs.core.Context;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
@Path("/discount")
public class DiscountService{
@POST
@Produces("application/xml")
@Path("/couponCartValid")
public String getDiscountsXML(){
MyDiscounts discount=new MyDiscounts();
try{
Marshaller jaxbMarshaller =jaxbContext.createMarshaller();
StringWriter writerxmlObj = new StringWriter();
jaxbMarshaller.marshal(order, writerxmlObj);
String xml = String.valueOf(writerxmlObj);
xml = xml.replaceAll("\\<\\?xml(.+?)\\?\\>", "").trim();
return xml;
}catch(Exception e){
return e.printStackTrace();
}
}