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为对象的更多相关文章

  1. 使用JAXB解析xml文件(一)

      1.java中解析xml的几种方式 1.1 JDK原生dom形式 原理:一次性把xml读入内存,在内存中构建成树形结构.优点:对节点操作方便,缺点:需要大量的内存空间,浪费资源 1.2 SAX形式 ...

  2. 记一次解析XML转对象的笔记

    项目中调用第三方API,返回格式是XML字符串,需要将XML反序列化为对象,格式如下: <?xml version="1.0"?> <Response xmlns ...

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

    项目中调用第三方API,返回格式是XML字符串,需要将XML反序列化为对象,格式如下: <?xml version="1.0"?> <Response xmlns ...

  4. jaxb解析xml工具类

    [quote]jaxb jdk 自带的解析xml的一种方式支持,只需要用注解对javabean进行数据绑定[/quote] package com.nnk.flowrecharge.common;im ...

  5. Jaxb解析xml准换为javabean

    先说下这个的背景吧,前些日子,有个以前的小同事说刚接触webservice,想解析下xml,记得我学的时候还是dom4j,sax的解析方式,最近看别人的代码用的jaxb的方式,觉得注解起来很简练,所以 ...

  6. 使用JAXB解析xml文件(二)

    前面一章简单演示了JAXB的用法,这个章节主要梳理一下JAXB常见的几个注解 1.@XmlRootElement 用于类级别的注解,对应xml的跟元素,常与 @XmlType 和 @XmlAccess ...

  7. JAXB解析xml 的注解说明

      1.将 xml 文件中的各个节点和属性信息创建对应的Java模型 2.在Java模型中的创建与 xml 文件对应的节点和属性需要用注解来表示@XmlRootElement   将一个Java类映射 ...

  8. JAXB解析xml

    废话不多说,直接上代码 核心类: package com.jaxb; import java.io.File; import java.io.FileInputStream; import java. ...

  9. 解析xml的问题未解决

    工作上需要解析xml,目前的逻辑是:解析xml到对象中,然后对象再插入数据库.但这存在内存溢出的风险. 今天做的另外一件事是将循环用到工作上,暂时还没有测试,是否能保证程序的重启.有待观察 ##### ...

随机推荐

  1. NYOJ82 迷宫寻宝(一)【BFS】

    迷宫寻宝(一) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描写叙述 一个叫ACM的寻宝者找到了一个藏宝图.它依据藏宝图找到了一个迷宫,这是一个非常特别的迷宫,迷宫里有N个 ...

  2. XP如何在桌面新建宽带连接的快捷方式

    1 打开控制面板,点击网络和Internet连接 2 如果存在宽带连接选项. 则点击左侧的网上邻居,然后点击查看网络连接 右击宽带连接,点击创建快捷方式,放到桌面,改一下快捷方式的名字即可.   3 ...

  3. C++基础学习教程(一)

    開始自己的C++复习进阶之路. 声明: 这次写的博文纯当是一个回想复习的教程.一些非常基础的知识将不再出现.或者一掠而过,这次的主要风格就是演示样例代码非常多~~~ 全部代码在Ubuntu 14.04 ...

  4. iOS实录:GCD使用小结(一)

    导语:在iOS中,多线程方案有四种:pthread.NSThread.NSOperation & NSOperationQueue 和 GCD,但是开发中GCD使用得最多,本文主要总结一下我使 ...

  5. Laravel之控制器

    一.简介 将所有的请求处理逻辑都放在单个routes.php 中肯定是不合理的,你也许还希望使用控制器类组织管理这些行为.控制器可以将相关的 HTTP 请求封装到一个类中进行处理.通常控制器存放在ap ...

  6. 算法练习--ABCD*E=DCBA

    //1.ABCD * E = DBCA//2.A,B,C,D {0-9} , E {1-9}//3.A,B,C,D,E all different var existSameN = function ...

  7. dr-helper项目设计介绍(一个包括移动端和Web端的点餐管理系统)

    一.源代码路径 https://github.com/weiganyi/dr-helper 二.界面 通过浏览器訪问Web服务,能够看到界面例如以下: ADT-Bundle编译project生成dr- ...

  8. Smarty Caching缓存 ¥ 我要打赏

    Smarty Caching缓存 https://www.yiibai.com/smarty/smarty_caching.html https://www.w3cschool.cn/smarty/s ...

  9. sprint3 【每日scrum】 TD助手站立会议第九天

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 整合原来做过的功能,并做相应的改进,整合其他的功能 团队进入最终的功能测试阶段,准备发布Beta版 在测试阶段BUG太多,不知道如何解决 Y ...

  10. 2d-Lidar 点云多直线拟合算法

    具体步骤: EM+GMM(高斯模糊模型) 点云分割聚类算法的实现. 基于RANSAC单帧lidar数据直线拟合算法实现. 多帧lidar数据实时直线优化算法实现. 算法实现逻辑: Struct lin ...