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

时间: 2024-08-01 22:26:33

JAXB解析XML为对象的相关文章

Jaxb解析XML

传统方式下,我们都是通过dom4j或者jdom方式来解析xml,一般都是将整个xml解析成内存中的document,再分层次遍历document树,这样有以下几个不好的地方,首先是占内存,还有就是代码死板,不能针对通用的xml进行解析,但是Jaxb却不一样,可以针对任何类型的xml进行解析,即使xml发生改变,可以只用该少量的代码,而不用更改代码逻辑,具体方法如下: 1,生成xsd 首先,我们按照现有的xml文件生成改文件对应的xsd文件,方法是采用xsd.exe方式,这个exe文件由微软提供,

[C#]记一次解析XML转对象的笔记

项目中调用第三方API,返回格式是XML字符串,需要将XML反序列化为对象,格式如下: 1 <?xml version="1.0"?> 2 <Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" totalCount="123" resultCode

JAXB解析xml 的注解说明

1.将 xml 文件中的各个节点和属性信息创建对应的Java模型 2.在Java模型中的创建与 xml 文件对应的节点和属性需要用注解来表示@XmlRootElement   将一个Java类映射为一段XML的根节点参数:name  定义这个根节点的名称    namespace   定义这个根节点命名空间 @XmlAccessorType  定义映射这个类中的何种类型需要映射到XML.可接收四个参数,分别是:XmlAccessType.PROPERTY:映射这个类中的属性(get/set方法)

通过Dom方式解析xml文件

此项目通过简单的天气情况显示来实现xml文件的解析 1. 搭建环境 1)创建如下图的包.类及文件 2)布局文件的大概样式如下图所示,用到四个TextView控件和一个RadioGroup控件 3)china.xml文件的内容如下 <?xml version="1.0" encoding="UTF-8"?> <china dn="day"> <city cityname="南京" pyName=&q

DOM方式解析xml文件查看天气

1.步骤: ①创建文档解析器的工厂对象 ②得到文档解析器对象 ③获取输入流对象 ④通过解析器的parse方法解析is对象 转换成Document对象 ⑤返回的是文档的根节点 ⑥判断是否有孩子节点进行获取子节点转换成元素节点得到属性节点 ⑦得到具体的某个属性节点 2.解析元素节点.属性节点.文本节点: 3.界面搭建 界面搭建的相关代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

Java xml 操作(Dom4J修改xml &#160;&#160;+ xPath技术 &#160;+ SAX解析 + XML约束)

1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大小写.有且仅有一个根标签. 属性: 可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单 双混用. 文档声明: <?xml version="1.0" encoding="utf-8"?> encoding="utf-8&q

Java用SAX解析XML

Myhandler package com.heli.xml.sax; /**  * 用SAX解析XML的Handler  */ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.hel

Java高级特性 第14节 解析XML文档(2) - SAX 技术

一.SAX解析XML文档 SAX的全称是Simple APIs for XML,也即XML简单应用程序接口.与DOM不同,SAX提供的访问模式是一种顺序模式,这是一种快速读写XML数据的方式.当使用SAX分析器对XML文档进行分析时,会触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX接口也被称作事件驱动接口. 1. SAX解析原理: 加载一点,读取一点,处理一点.对内存要求比较低. SAX解析工具内置在jdk中:org.xml.sax.*

JAXB:xml与java对象互转

JaxbContext生成xml文件或java类对象转化注解    JAXB提供了一个快速便捷的方式将Java对象与XML进行转换.在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB.  JAXB 可以实现Java对象与XML的相互转换,在JAXB中,将一个Java对象转换为XML的过程称之为Marshal,将XML转换为Java对象的过程称之为UnMarshal.我们可以通过在Java 类中标注注解的方式将一个Java