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. Quaternion 四元数

    Quaternions are used to represent rotations. 四元数用于表示旋转. They are compact, don't suffer from gimbal l ...

  2. vue-router 运行机制 及 底层原理

    1.测试页面 index.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  3. SQLserver备份数据库示例

     BACKUP DATABASE [yee]TO  DISK = N'D:\数据库备份\yee2015.9.11.bak'WITH  NAME = N'yee - 备份',  NOFORMAT, NO ...

  4. Android 报错记录

     IOException java.io.IOException: Permission denied: 权限不足.原因可能是: 未加入权限 <uses-permission android ...

  5. 网上流传的长盛不衰的Steve Jobs(乔布斯) 14分钟“Stay Hungry, Stay Foolish”演讲视频

    http://timyang.net/misc/speech/附:网上流传的长盛不衰的Steve Jobs 14分钟“Stay Hungry, Stay Foolish”演讲视频 (原视频地址:htt ...

  6. select * from A.B.C.D sqlserver 中 select * from .Literary_PuDong.dbo.Users

    服务器名.数据库名.表拥有者(架构名).表名 服务器名(服务器IP).数据库名.表拥有者.表名 [192.168.99.66].TEST.dbo.table1[Testdb].TEST.dbo.tab ...

  7. MyReport报表引擎2.7.8.8公布

    支持嵌套子报表直接编辑保存,多个子报表同一时候存储在一个报表格式文件中,设计更简便,避免了嵌套报表的多个报表格式载入. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5 ...

  8. Theme.AppCompat.Light无法找到问题

    使用adt开发新建一个Android app.选择支持的SDK版本号假设小于11(Android3.0)就会报例如以下错误. error: Error retrieving parent for it ...

  9. Android版CSDN发现的一些问题

          作为CSDN的忠有用户,在他一推出这款APP以后.就下载了使用,近期发现了一些个问题,在此提出来.希望看到或者遇到同样问题的,提出你们的解决方式.       在CSDN手机版的首页上,我 ...

  10. ApplicationContextRunner如何简化自动配置测试

    1. 概览 众所周知,自动配置是Spring Boot的关键功能之一, 但测试自动配置可能会很棘手. 在以下部分中,我们将展示ApplicationContextRunner如何简化自动配置测试. 2 ...