jaxb解析xml处理list

本文详细介绍了Java中使用JAXB进行XML序列化的多种方法,包括如何定制XML输出格式,如改变元素名称、列表属性的表现形式及使用不同注解实现多样化输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.everise.entity;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement  
@XmlAccessorType(XmlAccessType.FIELD) 
public class UserModel implements Serializable{
     
    /**
     * 
     */
    private static final long serialVersionUID = 612685720634981013L;

    private List<String> nameList = new ArrayList<>();  
   
    public List<String> getNameList() {
        return nameList;
    }
    public void setNameList(List<String> nameList) {
        this.nameList = nameList;
    }
    public static void main(String[] args) throws Exception {  
        JAXBContext jc = JAXBContext.newInstance(UserModel.class);  
   
        UserModel userModel = new UserModel();  
        userModel.getNameList().add("aaa");  
        userModel.getNameList().add("bbb");  
   
        Marshaller marshaller = jc.createMarshaller();  
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
        marshaller.marshal(userModel, System.out);  
    } 
    
}
默认的把这个对象输出为一般的XML: 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <nameList>aaa</nameList>
    <nameList>bbb</nameList>
</userModel>

@XmlElement(name="guess")  
  private List<String> nameList = new ArrayList<>(); 
加上这个注解的话,则按自定义的xml标签名去输出某个属性,如下: 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <guess>aaa</guess>
    <guess>bbb</guess>
</userModel>
2) @XmlElementWrapper 
  这个注解等于在最外面再包一层了, 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <names>
        <name>aaa</name>
        <name>bbb</name>
    </names>
</userModel>
 

3) @XmlList 
  这个等于是在同一行中,把list中的输出,以空格形式分隔开来, 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <nameList>aaa bbb</nameList>
</userModel>
 

4) 
@XmlList和 @XmlAttribute混合使用 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel nameList="aaa bbb"/>

5) 
  @XmlList 和 @XmlValue混用 
    

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>aaa bbb</userModel>

 

其他注意事项

必须写

@XmlRootElement(name="advan")
@XmlAccessorType(XmlAccessType.FIELD)

否则报错

对应xml的头文件

<?xml version="1.0" encoding="utf-8" ?>
<advan type="aay" name="连连看">

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值