java html xml_Java HTML/XML - 如何使用@XmlElements标记为@XmlJavaTypeAdapters

import java.io.File;

import java.io.Serializable;

import java.util.List;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.Marshaller;

import javax.xml.bind.Unmarshaller;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlElements;

import javax.xml.bind.annotation.XmlRootElement;

import javax.xml.bind.annotation.adapters.XmlAdapter;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

public class Main {

public static void main(String[] args) throws Exception {

JAXBContext jc = JAXBContext.newInstance(Compound.class);

Unmarshaller unmarshaller = jc.createUnmarshaller();

Compound compound = (Compound) unmarshaller

.unmarshal(new File("input.xml"));

Marshaller marshaller = jc.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

marshaller.marshal(compound, System.out);

}

public static abstract class Value implements Serializable {

}

public static class SimpleAdapter extends XmlAdapter {

@Override

public Simple unmarshal(String v) throws Exception {

Simple simple = new Simple();

simple.setSimple(v);

return simple;

}

@Override

public String marshal(Simple v) throws Exception {

return v.getSimple();

}

}

@XmlRootElement(name = "compound")

@XmlAccessorType(XmlAccessType.FIELD)

public static class Compound extends Value {

@XmlElements({ @XmlElement(name = "simple", type = Simple.class),

@XmlElement(name = "compound", type = Compound.class) })

protected List value;

public List getValue() {

return value;

}

public void setValue(List value) {

this.value = value;

}

}

@XmlJavaTypeAdapter(SimpleAdapter.class)

public static class Simple extends Value {

private java.lang.String simple;

public java.lang.String getSimple() {

return simple;

}

public void setSimple(java.lang.String simple) {

this.simple = simple;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值