搜索引擎网站推广法怎么做,怎么做cpa网站,代驾软件开发公司,外贸平台收费标准文章目录 使用JAXB将xml转成Java对象1. xml内容2. Java对象类3. 封装的工具类4. 测试 使用JAXB将xml转成Java对象 工作中遇到个问题#xff0c;需要将xml转对象#xff0c;之前复杂的xml都是自己用dom4j来解析组装成Java对象#xff0c;但是对于简单的#xff0c;看到了JAX… 文章目录 使用JAXB将xml转成Java对象1. xml内容2. Java对象类3. 封装的工具类4. 测试 使用JAXB将xml转成Java对象 工作中遇到个问题需要将xml转对象之前复杂的xml都是自己用dom4j来解析组装成Java对象但是对于简单的看到了JAXB处理的这种方式就整理下写成个工具类。 1. xml内容
city.xml
?xml version1.0 encodingUTF-8 ?
c c10a10/ab20/bd d1101280101 d2重庆 d3nanping d4南坪/d d1101280102 d2重庆 d3yubei d4渝北/d d1101280103 d2重庆 d3dadukou d4大渡口/
/c2. Java对象类
CityList.xml
package com.stormkai.jaxb;import lombok.Data;
import javax.xml.bind.annotation.*;
import java.util.List;Data
XmlRootElement(name c)
XmlAccessorType(XmlAccessType.FIELD)
public class CityList {XmlAttribute(name c1)private String c1;XmlElement(name a)private String a;XmlElement(name b)private String b;XmlElement(name d)private ListCity cityList;
}
City.java
package com.stormkai.jaxb;import lombok.Data;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;Data
XmlRootElement(name d)
XmlAccessorType(XmlAccessType.FIELD)
public class City {XmlAttribute(name d1)private String cityId;XmlAttribute(name d2)private String cityName;XmlAttribute(name d3)private String cityNode;XmlAttribute(name d4)private String area;
}
JAXBContext类是应用的入口用于管理XML/Java绑定信息 Unmarshaller接口将XML数据反序列化为Java对象 XmlType将Java类或枚举类型映射到XML模式类型 XmlAccessorType(XmlAccessType.FIELD) 控制字段或属性的序列化
PUBLIC_MEMBER 默认值public权限亦或是具有get/set方法属性FIELD对象中的所有属性PROPERT对象中所有具备get/set方法的属性NONE对象的所有属性都不映射
XmlAccessorOrder控制JAXB 绑定类中属性和字段的排序 XmlJavaTypeAdapter使用定制的适配器即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法以序列化Java类为XML XmlElementWrapper 对于数组或集合即包含多个元素的成员变量生成一个包装该数组或集合的XML元素称为包装器 XmlRootElement将Java类或枚举类型映射到XML元素 XmlElement将Java类的一个属性映射到与属性同名的一个XML元素 XmlAttribute将Java类的一个属性映射到与属性同名的一个XML属性
3. 封装的工具类
XmlBuilder.java
package com.stormkai.jaxb;import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.Reader;
import java.io.StringReader;public class XmlBuilder {public static T T xmlToObj4Jaxb(Class? clazz, String xml){try {T xmlObject;Reader reader;JAXBContext context JAXBContext.newInstance(clazz);Unmarshaller unmarshaller context.createUnmarshaller();reader new StringReader(xml);xmlObject (T)unmarshaller.unmarshal(reader);reader.close();return xmlObject;} catch (Exception e) {e.printStackTrace();}return null;}
}
4. 测试 public class XmlBuilder {public static T T xmlToObj4Jaxb(Class? clazz, String xml){try {T xmlObject;Reader reader;JAXBContext context JAXBContext.newInstance(clazz);Unmarshaller unmarshaller context.createUnmarshaller();reader new StringReader(xml);xmlObject (T)unmarshaller.unmarshal(reader);reader.close();return xmlObject;} catch (Exception e) {e.printStackTrace();}return null;}public String getCityXml1(){String xml ?xml version\1.0\ encoding\UTF-8\ ?\n c c1\0\\n a10/a\n b20/b\n d d1\101280101\ d2\重庆\ d3\nanping\ d4\南坪\/\n d d1\101280102\ d2\重庆\ d3\yubei\ d4\渝北\/\n d d1\101280103\ d2\重庆\ d3\dadukou\ d4\大渡口\/\n /c;return xml;}public static void main(String[] args) {String xml new XmlBuilder().getCityXml1();CityList cityList xmlToObj4Jaxb(CityList.class, xml);System.out.println(JSON.toJSONString(cityList));}
}
输出结果:
{a:10,b:20,c1:0,cityList:[{area:南坪,cityId:101280101,cityName:重庆,cityNode:nanping},{area:渝北,cityId:101280102,cityName:重庆,cityNode:yubei},{area:大渡口,cityId:101280103,cityName:重庆,cityNode:dadukou}]}Process finished with exit code 0输出的json格式化后:
{a: 10,b: 20,c1: 0,cityList: [{area: 南坪,cityId: 101280101,cityName: 重庆,cityNode: nanping}, {area: 渝北,cityId: 101280102,cityName: 重庆,cityNode: yubei}, {area: 大渡口,cityId: 101280103,cityName: 重庆,cityNode: dadukou}]
}