xml数据转为javaBean对象,并获取javaBean对象

xml转javaBean

xml文件是一层层关系,假如你要获取xml某层节点里数据,需要一层层转换(赋值)到javaBean,直到赋到你需要数据层。一般应用于webservice数据交互,需要将xml转换成javaBean对象

Xml文件案例

<cisReports>
    <cisReport>
        <queryConditions>
            <item>
                <name>高某人</name>
                <age>23</age>
                <address>朝阳</address>
            </item>
        </queryConditions>       
    </cisReport>
</cisReports>

Xml转javaBean工具类

@SuppressWarnings("unchecked")
public static Object convertXmlStrToObject(Class clazz, String xmlStr) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(clazz);
            // 进行将Xml转成对象的核心接口
            Unmarshaller unmarshaller = context.createUnmarshaller();
            StringReader sr = new StringReader(xmlStr);
            xmlObject = unmarshaller.unmarshal(sr);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }

根据xml和要获取的信息创建javabean对象

@XmlRootElement(name = "cisReports")
@XmlAccessorType(XmlAccessType.FIELD)
public class CisReports {
    @XmlElement(name = "cisReport")
    private CisReport cisReport;

    public CisReport getCisReport() {
        return cisReport;
    }

    public void setCisReport(CisReport cisReport) {
        this.cisReport = cisReport;
    }
@XmlAccessorType(XmlAccessType.FIELD)
public class CisReport {
    @XmlElement(name = "queryConditions")
    private  QueryConditions queryConditions;

    public QueryConditions getQueryConditions() {
        return queryConditions;
    }

    public void setQueryConditions(QueryConditions queryConditions) {
        this.queryConditions = queryConditions;
    }

@XmlAccessorType(XmlAccessType.FIELD)
public class QueryConditions {
    @XmlElement(name = "item")
    private  Item item;

    public Item getItem() {
        return item;
    }

    public void setItem(Item item) {
        this.item = item;
    }
@XmlAccessorType(XmlAccessType.FIELD)
public class Item {
    @XmlElement(name = "name")
    private String name;
    @XmlElement(name = "age")
    private String age;
    @XmlElement(name = "address")
    private String address;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

注解说明

@XmlRootElement:将类或枚举类型映射到 XML 元素。
@XmlElement:将JavaBean 属性映射到派生于属性名称的 XML 元素。
@XmlAccessorType(XmlAccessType.FIELD)只有属性才能被转换成 xml 中的标签

利用提供的工具类查看javabean里获取到的xml信息

		//CisReports.class是你要转换第一层javaBean、resuXml是xml字符串
        Object object=xmlToBean.convertXmlStrToObject(CisReports.class,resuXml);
        CisReports cisReports = new CisReports();
        cisReports = (CisReports) object;
        System.out.println(cisReports.getCisReport().getQueryConditions().getItem().getName()
                           +cisReports.getCisReport().getQueryConditions().getItem().getAge()
                           +cisReports.getCisReport().getQueryConditions().getItem().getAddress());

运行结果

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值