JAXB支持注解将XML转化为对象,具体看一个简单的例子:
<?xml version="1.0" encoding="utf-8"?>
<Api>
<algos>
<!-- 算法类型 -->
<algo name="YYFY" text="运营费用">
</algo>
</algos>
</Api>
XML对应的pojo对象:
package com.yss.aval.aa.util.pojo;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
/**
* AlgoAPI.xml封装对象
* 此对象仅供解析XML封装数据临时使用
* @author 马向峰
*
*/
@XmlRootElement(name = "Api")
public class AlgoAPIU {
/**
* 对应节点 algos
*/
@XmlElement(name = "algos")
private AlgosU algos;
@XmlTransient
public AlgosU getAlgos() {
return algos;
}
public void setAlgos(AlgosU algos) {
this.algos = algos;
}
}
package com.yss.aval.aa.util.pojo;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
/**
* 对应algos节点
* 此对象仅供解析XML封装数据临时使用
* @author 马向峰
*
*/
public class AlgosU {
@XmlElement(name = "algo")
private List<AlgoU> list;
@XmlTransient
public List<AlgoU> getList() {
return list;
}
public void setList(List<AlgoU> list) {
this.list = list;
}
}
package com.yss.aval.aa.util.pojo;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlTransient;
/**
* 对应AlgoAPI.xml节点的algo
* 此对象仅供解析XML封装数据临时使用
* @author 马向峰
*
*/
public class AlgoU {
@XmlAttribute(name = "name")
private String name;
@XmlAttribute(name = "text")
private String text;
@XmlElement(name="variables")
private VariableAPIU variableAPI;
@XmlTransient
public VariableAPIU getVariableAPI() {
return variableAPI;
}
public void setVariableAPI(VariableAPIU variableAPI) {
this.variableAPI = variableAPI;
}
@XmlTransient
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlTransient
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
测试类:
package com.yss.aval.aa.util;
import java.io.File;
import com.yss.aval.aa.util.pojo.AlgoAPIU;
import com.yss.framework.api.util.JAXBProcessor;
/**
* AlgoAPI.xml解析工具类
*
* @author 马向峰
* @Date 20170712
*/
public class AlgoAPIXMLParse {
/**
* 加载并解析AlgoApi.xml
*/
public static AlgoAPIU load() {
JAXBProcessor jProc;
try {
jProc = new JAXBProcessor();
AlgoAPIU algoAPI = new AlgoAPIU();
algoAPI = (AlgoAPIU) jProc.unMarshal(algoAPI, new File(
"D:/AlgoApi.xml"));
return algoAPI;
} catch (Exception e) {
e.getStackTrace();
}
return null;
}
/*
* public static void main(String[] args) { AlgoAPIXMLParse api = new
* AlgoAPIXMLParse(); api.load(); }
*/
}
特别注意的是 XML的没一个节点对应一个对象。