栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用jax-rs将bean结构映射到其他模式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用jax-rs将bean结构映射到其他模式

接下来呢?

使用Eclipselink JAXB(MOXy),您可以执行以下操作。注意:我是MOXy技术负责人。

测试

import java.util.ArrayList;import java.util.List;import javax.xml.bind.Unmarshaller;import javax.xml.bind.annotation.XmlAccessorType;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlRootElement;import javax.xml.bind.annotation.XmlType;import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;import org.eclipse.persistence.oxm.annotations.XmlPath;@XmlRootElement@XmlType(propOrder={"somevalue", "fields"})@XmlAccessorType(XmlAccessType.FIELD)class Test {    @XmlJavaTypeAdapter(SomevalueAdapter.class)    @XmlPath("fields[1]")    boolean somevalue;    @XmlJavaTypeAdapter(FieldsAdapter.class)    List<Field> fields = new ArrayList<Field>();    public Boolean isSomevalue() {        return somevalue;    }    public void setSomevalue(boolean somevalue) {        this.somevalue = somevalue;    }    public List<Field> getFields() {        return fields;    }    public void setFields(List<Field> fields) {        this.fields = fields;    }    public void afterUnmarshal(Unmarshaller unmarshaller, Object parent) {        for(Field field : fields) { if("somevalue".equals(field.getName())) {     somevalue = Boolean.valueOf(field.getValue());     fields.remove(field); }        }    }}

领域

public class Field {    private String name;    private String value;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getValue() {        return value;    }    public void setValue(String value) {        this.value = value;    }}

SomevalueAdapter

import javax.xml.bind.annotation.adapters.XmlAdapter;public class SomevalueAdapter extends XmlAdapter<AdaptedField, Boolean> {    @Override    public Boolean unmarshal(AdaptedField v) throws Exception {        String value = v.getField().getValue();        return Boolean.valueOf(value);    }    @Override    public AdaptedField marshal(Boolean v) throws Exception {        AdaptedField adaptedField = new AdaptedField();        Field field = new Field();        field.setName("somevalue");        field.setValue(String.valueOf(v));        adaptedField.setField(field);        return adaptedField;    }}

字段适配器

import javax.xml.bind.annotation.adapters.XmlAdapter;public class FieldsAdapter extends XmlAdapter<AdaptedField, Field> {    @Override    public Field unmarshal(AdaptedField v) throws Exception {        return v.getField();    }    @Override    public AdaptedField marshal(Field v) throws Exception {        AdaptedField adaptedField = new AdaptedField();        adaptedField.setField(v);        return adaptedField;    }}

AdaptedField

public class AdaptedField {    private Field field;    public Field getField() {        return field;    }    public void setField(Field field) {        this.field = field;    }}

演示版

导入java.io.File;

import javax.xml.bind.JAXBContext;import javax.xml.bind.Marshaller;import javax.xml.bind.Unmarshaller;public class Demo {    public static void main(String[] args) throws Exception {        JAXBContext jc = JAXBContext.newInstance(Test.class);        Unmarshaller unmarshaller = jc.createUnmarshaller();        Test test = (Test) unmarshaller.unmarshal(new File("input.xml"));        Marshaller marshaller = jc.createMarshaller();        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);        marshaller.marshal(test, System.out);    }}

input.xml

<?xml version="1.0" encoding="UTF-8"?><test>   <fields>      <field>         <name>somevalue</name>         <value>true</value>      </field>   </fields>   <fields>      <field>         <name>otherValue</name>         <value>1</value>      </field>   </fields>   <fields>      <field>         <name>anotherValue</name>         <value>2</value>      </field>   </fields></test>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/406323.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号