zoukankan      html  css  js  c++  java
  • JAXB解析XML为对象

    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的没一个节点对应一个对象。

  • 相关阅读:
    promise异步获取数据
    解决浏览器保存密码自动填充问题
    函数柯里化
    JS高级函数的用法
    Object.assign替代写法
    tree-shaking
    假如参数是对象或者函数,如何处理
    宏任务与微任务 event-loop
    Linux常用命令大全
    Image Processing
  • 原文地址:https://www.cnblogs.com/blog411032/p/7168908.html
Copyright © 2011-2022 走看看