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的没一个节点对应一个对象。
JAXB解析XML为对象的更多相关文章
- 使用JAXB解析xml文件(一)
1.java中解析xml的几种方式 1.1 JDK原生dom形式 原理:一次性把xml读入内存,在内存中构建成树形结构.优点:对节点操作方便,缺点:需要大量的内存空间,浪费资源 1.2 SAX形式 ...
- 记一次解析XML转对象的笔记
项目中调用第三方API,返回格式是XML字符串,需要将XML反序列化为对象,格式如下: <?xml version="1.0"?> <Response xmlns ...
- [C#]记一次解析XML转对象的笔记
项目中调用第三方API,返回格式是XML字符串,需要将XML反序列化为对象,格式如下: <?xml version="1.0"?> <Response xmlns ...
- jaxb解析xml工具类
[quote]jaxb jdk 自带的解析xml的一种方式支持,只需要用注解对javabean进行数据绑定[/quote] package com.nnk.flowrecharge.common;im ...
- Jaxb解析xml准换为javabean
先说下这个的背景吧,前些日子,有个以前的小同事说刚接触webservice,想解析下xml,记得我学的时候还是dom4j,sax的解析方式,最近看别人的代码用的jaxb的方式,觉得注解起来很简练,所以 ...
- 使用JAXB解析xml文件(二)
前面一章简单演示了JAXB的用法,这个章节主要梳理一下JAXB常见的几个注解 1.@XmlRootElement 用于类级别的注解,对应xml的跟元素,常与 @XmlType 和 @XmlAccess ...
- JAXB解析xml 的注解说明
1.将 xml 文件中的各个节点和属性信息创建对应的Java模型 2.在Java模型中的创建与 xml 文件对应的节点和属性需要用注解来表示@XmlRootElement 将一个Java类映射 ...
- JAXB解析xml
废话不多说,直接上代码 核心类: package com.jaxb; import java.io.File; import java.io.FileInputStream; import java. ...
- 解析xml的问题未解决
工作上需要解析xml,目前的逻辑是:解析xml到对象中,然后对象再插入数据库.但这存在内存溢出的风险. 今天做的另外一件事是将循环用到工作上,暂时还没有测试,是否能保证程序的重启.有待观察 ##### ...
随机推荐
- Angular 学习笔记——filter
<!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ...
- JAVA Eclipse中的Android程序如何使用线程
我们先单独定义一个java类,名字可以任意取(比如叫做ClientHeartBeat类,我当前在做一个socket通信的客户端,我们假定需要一个可以测试心跳的程序),注意他要继承Thread,然后重载 ...
- IOS 编程中引用第三方的方类库的方法及常见问题
方法一:直接复制全部源文件到项目中 这样的方法就是把第三方类库的全部源文件拷贝到项目中,直接把全部.h和.m文件拖到XCode项目中就可以. 注意: 1. 假设第三方类库引用了一些系统自带类库,那么在 ...
- react-native 路由 react-native-router-flux
引言 react-native-router-flux 是一个基于 react-navigation 路由框架,进一步简化了页面跳转的步骤,并且一直随着 react-navigation升级更新版本. ...
- 关于汉诺塔,C++代码,代码效果演算
1.故事介绍 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上依照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘 ...
- my_interface
import flask,osserver=flask.Flask(__name__) #当前这个python文件,当做一个服务 @server.route('/error',methods=['ge ...
- java 异常 java.lang.OutOfMemoryError: GC overhead limit exceeded 解决
一.异常如下: Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded ...
- .Net、C# 汉字转拼音,简体繁体转换方法
Visual Studio International Pack 包含一组类库,该类库扩展了.NET Framework对全球化软件开发的支持.使用该类库提供的类,.NET 开发人员可以更方便的创建支 ...
- sql CHARINDEX() 与 PATINDEX() LEN() substring() COLLATE RAISERROR
CHARINDEX() 在一个表达式中搜索另一个表达式并返回其起始位置(如果找到). CHARINDEX ( expressionToFind , expressionToSearch [ , st ...
- 实际项目中,看 ECharts 和 HighCharts 渲染性能对比,表面看衣装,本质看内功!!!
最近做项目,使用的是echarts显示图表数据,但是数据量比较多的时候,有卡顿的情况.后来同事拿echarts和HighCharts做了对比,仅供大家参考.同时感谢同事做的工作. 一.查询1天的源数据 ...