JAXB方式读写xml实例

Java中XML与Properties文件读写操作详解 DOM 是一种基于树形结构的 XML 解析方法,它将整个 XML 文档加载到内存中,并构建一个完整的文档对象模型(DOM Tree),供程序进行遍历和操作。DOM:适合小型 XML,结构清晰,但性能差。SAX:适合大型 XML,低内存,但不支持修改。StaX:适合中大型 XML,灵活高效,推荐用于现代 Java 项目。选择合适的解析方式,不仅影响程序的性能和稳定性,也决定了开发效率和维护成本。 阅读详情
<pre class="html" name="code">在工作中遇到了需要读取xml的业务,发现原代码使用的是dom4j,因为这个xml的节点层次比较深,原代码显得杂乱无章,因为我修改了代码使用了jaxb读取xml
jaxb 的优势在于他可以以javabean 注入的方式映射到xml,代码干净利落。
我写了一个demo,我们先看下xml文件的结构


<ArticleData>
	<article>
		<title>super</title>
		<email>xubing@thunisoft.com</email>
		<date>2016/07/14</date>
		<articleChild>
			<super>super
			</super>
		</articleChild>
	</article>
	<test>我是test</test>
	<ee></ee>
</ArticleData>

 

首先 ArticleDate 节点对应的javabean  根节点必须用@XmlRootElement(name="ArticleDate") 这个注入

 

package com.superbing.thunisoft.ajaxb.bean;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="ArticleData")
public class ArticleData {
	private List<Article> article = new ArrayList<Article>();
	private String test;
	private String wca;
	
	public final String getWca() {
		return wca;
	}

	public final void setWca(String wca) {
		this.wca = wca;
	}

	public final String getTest() {
		return test;
	}

	public final void setTest(String test) {
		this.test = test;
	}

	public final List<Article> getArticle() {
		return article;
	}

	public final void setArticle(List<Article> article) {
		this.article = article;
	}
}

 

接下来是Article 节点 这里有一个@XmlElement(name="super") 这里 name = super 是一个别名的性质,child这个节点对应的xml里的节点可以叫super 而不是child

package com.superbing.thunisoft.ajaxb.bean;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

public class ArticleChild {
	
	private String child;
	@XmlElement(name="super")
	public final String getChild() {
		return child;
	}

	public final void setChild(String child) {
		this.child = child.trim();
	}
}


最后是 Article 节点

package com.superbing.thunisoft.ajaxb.bean;

import java.util.ArrayList;
import java.util.List;

public class Article {
	private String title;
	private String email;
	private String date;
	List<ArticleChild>  articleChild = new ArrayList<ArticleChild>();

	public final List<ArticleChild> getArticleChild() {
		return articleChild;
	}
	public final void setArticleChild(List<ArticleChild> articleChild) {
		this.articleChild = articleChild;
	}
	public final String getTitle() {
		return title;
	}
	public final void setTitle(String title) {
		this.title = title;
	}
	public final String getEmail() {
		return email;
	}
	public final void setEmail(String email) {
		this.email = email;
	}
	public final String getDate() {
		return date;
	}
	public final void setDate(String date) {
		this.date = date;
	}

}


好了,读取xml的时候到了。  这里的for 循环是为了测试 代码用的。。 下班了拜拜

package com.superbing.thunisoft.ajaxb.xmlread;

import java.io.File;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import com.superbing.thunisoft.ajaxb.bean.Article;
import com.superbing.thunisoft.ajaxb.bean.ArticleChild;
import com.superbing.thunisoft.ajaxb.bean.ArticleData;

public class TestAjaxb {
	public static void main(String[] args) {
		File xmlFile = new File("C:\\Users\\Administrator\\Desktop\\jaxb.xml");
		JAXBContext context;
		try {
			context = JAXBContext.newInstance(ArticleData.class);
			Unmarshaller unm = context.createUnmarshaller();
			ArticleData data = (ArticleData) unm.unmarshal(xmlFile);
			System.out.println(data.getTest());
			List<Article> list = data.getArticle();
			for(Article art:list) {
				for(ArticleChild cd : art.getArticleChild()){
					System.out.println(cd.getChild() + "super");
				}
				System.out.println(art.getTitle());
			}
		} catch (JAXBException e) {
			e.printStackTrace();
		}
	}
}


 

道路场景分割:车道线、可行驶区域与路沿检测 道路场景分割:车道线、可行驶区域与路沿检测​ ,人工智能,计算机视觉,大模型,AI,文章围绕道路场景分割展开,涵盖车道线、可行驶区域与路沿检测。介绍了基本概念、重要性,各部分检测的类型、方法、难点及解决思路,还涉及技术融合、数据集、评价指标、发展趋势、应用案例、代码示例、不同天气处理、实际问题与方案、实现流程、相关技术工具、教育研究应用、产业前景、伦理安全问题及学习资源等,全面阐述了道路场景分割的多方面内容,为相关学习和研究提供了丰富信息。 阅读详情

相关推荐

Sublime Text4代码配色自定义方案

关于Sublime Text对于我的使用体验,只能说内置的代码主题真的都太low了,一点都不好看。所以接下来我分享一下我自定义代码配色。当然,大家也可以通过我给的中文翻译注释来自定义自己喜欢的颜色。废话不多说,直接上代码直接将代码复制粘贴到:Preferences > Customize Color Scheme 即可。},"globals":"foreground": "var(white)", // 前景色。

追求细节,成就完美 6026

JAXB注解 java 关于xml的注解,自动生成xml文件 - @XML***

JAXB(Java API for XML Binding),提供了一个快速便捷的方式将Java对象与XML进行转换。在JAX-WS(Java的WebService规范之一)中,JDK1.6 自带的版本JAX-WS2.1,其底层支持就是JAXB。     JAXB 可以实现Java对象与XML的相互转换,在JAXB中,将一个Java对象转换为XML的过程称之为Marshal,将XML转换为J

lhzjj的专栏 6万+

开关电源设计实战:如何用AP值快速选型磁芯(附计算公式推导)

本文为开关电源工程师提供了基于AP值的磁芯快速选型实战指南。文章深入解析了AP值作为磁芯‘功率吞吐量’指标的核心物理意义,并通过详细的公式推导和24W反激电源设计实例,手把手演示如何利用AP值计算公式,结合电流密度、窗口利用率等关键参数,从众多磁芯型号中高效筛选出合适型号,同时强调了选型后的关键校验步骤与常见误区。

weixin_29234239的博客 875

解读JAXBContext类

解读JAXBContext类 JAXBContext是整个JAXB API的入口.主要用来构建JAXB实例(newInstance()),并提供与XML/Java绑定信息相关的抽象方法,如编组(createMarshaller())、解组(createUnmarshaller())和验证(createValidator()).其中与验证相关的方法已废弃(Deprecated),被Validator...

mry6的博客 8442

深空探测处理软件USGS-ISIS的下载安装

深空探测处理软件USGS-ISIS下载安装教程

qq_31721595的博客 3313

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

SAP FICO 消息号 FAA_POST042 技术清算科目中的余额:分类账 0L,货币 00、RMB、10000.00-

我好像病了的博客 2139

JAXB注解

@XmlRootElement   将一个Java类映射为一段XML的根节点 参数:name          定义这个根节点的名称       namespace    定义这个根节点命名空间 @XmlAccessorType  定义映射这个类中的何种类型需要映射到XML。 可接收四个参数,分别是:       XmlAccessType.FIELD:映射这个类中的

lihushiwoa的专栏 564

ESP32-C3微型9轴感知模块的硬件工程实践

在嵌入式系统小型化趋势下,低功耗微控制器与多传感器融合成为智能终端的基础技术路径。其核心原理在于芯片能效比、射频合规性与电源噪声抑制的协同优化,技术价值体现在降低认证门槛、提升EMC鲁棒性及保障MEMS传感器精度。典型应用场景包括可穿戴设备、微型无人机姿态控制和工业边缘传感节点。本文围绕ESP32-C3平台展开,深入解析QFN封装选型逻辑、同步降压电源设计、LSM9DS1九轴校准策略等关键环节,覆盖FCC/CE认证规避、USB-C接口EMC防护等高频工程痛点。

weixin_42607969的博客 368

JAXBContext注解方式解析XML

config.xml内容如下: <?xml version="1.0" encoding="UTF-8"?> <sql> <thread>1</thread> <jsonfiles> <jsonfile> <id>2</id> <name>zs</name> </jsonfile&gt

L 1313

TDSQL-单机安装

根据腾讯云官方要求,TDSQL安装至少需要三台机器。本人想要学习TDSQL但是没有足够的机器资源,经过仔细分析研究TDSQL安装过程,尝试发现单台机器也可以成功安装TDSQL,现将本人单台机器安装TDSQL的过程以及安装过程中遇到的问题在此分享。具体安装过程可参考腾讯官方文档,本文仅分享与官方文档不一致的步骤。

u012607648的博客 6808

使用BK3432芯片进行蓝牙开发的详细指南:编程手册与实际应用

BK3432是一款蓝牙4.2双模式芯片,支持蓝牙低功耗(BLE)和经典蓝牙(BR/EDR)模式。它集成了高性能的RF收发器、基带处理器、ARM9E内核、丰富的功能外设单元,并支持BLE应用的可编程协议和概要文件。蓝牙版本:4.2数据速率:最高支持2Mbps内核:ARM9ERF收发器:高性能、低功耗外设单元:包括UART、SPI、I2C、GPIO等功耗:超低功耗设计,适合电池供电的应用。

m0_57781768的博客 4447

JAVA使用JAXB规范读取XML转化为POJO

xml解析,xml映射到java bean

yinggenan的博客 988

LPDDR5 学习笔记01:功能概述

LPDDR5/LPDDR5X SDRAM设备采用8/16DQ通道架构,支持2Gb-32Gb容量。通过CK命令时钟和更快的WCK数据时钟协同工作,7个CA引脚传输控制信息,支持2:1或4:1的WCK:CK比例。设备提供BG/8B/16B三种存储模式选择,分别支持不同数据速率(最高8.533Gbps)和突发长度。采用0.5V VDDQ电源电压,实现高速双倍数据速率传输,并通过差分WCK时钟完成数据采样。读写采用突发访问机制,需先激活命令再执行读写操作。新型LPDDR5X仅支持BG和16B模式,优化了高速性能。

一只豌豆象的博客 2202

JAXB方式读写XML文件

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33817333的博客 228

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java和xml相互转换,java bean转xml文件

一、前言。     最近正在做一个项目,根据需求计划需要一种 Object XML的工具,而JAXB就非常符合需求,于是以下是近天来的研究心得。 二、JAXB技术介绍 1.         什么是JAXB?     Java  Architecture for XML Binding (JAXB)是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,

2471

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

一文看懂Java对XML文件序列化与反序列化解析教程(小白版)

本文介绍了Java中XML文件序列化与反序列化的基础知识和实现方法。主要内容包括:XML的基本概念和结构,Java处理XML的常用方式(重点介绍JAXB和Jackson XML),以及JAXB的核心注解使用。通过详细的代码示例,演示了如何实现简单Java对象到XML的转换(序列化)以及XML到Java对象的转换(反序列化),适合Java初学者快速掌握XML数据处理的入门技能。

isoft888的专栏,致力于C#/python分享物联网、大数据,神经网络的等领域,欢迎讨论交流! 1642

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

写入和解析 XML 文档

待测试的 Java 对象 RootElement: import javax.xml.bind.annotation.XmlRootElement; /** * Unmarshaller的文档根元素 */ @XmlRootElement public class RootElement { private long val1; private double val2; ...

每一个不曾起舞的日子,都是对人生的辜负。 515

XML 简介

XML(Extensible Markup Language)是一种可扩展的标记语言,用于存储和传输结构化数据。其特点包括自描述性、跨平台性以及与编程语言无关性。

qq_40464334的博客 440

jaxb读写xml小例子

使用maven构建工程,在pom.xml加入如下依赖:         com.sun.xml.bind         jaxb-impl         2.1.13   一个Person类: package com.mycomp.jaxb; import java.io.Serializable; import javax.xml.bind.annotatio

Dean_Deng的专栏 1449

JAXB教程–入门

注意:请查看我们的Java XML绑定JAXB教程– ULTIMATE指南 什么是JAXB? JAXB代表用于XML绑定的Java体系结构。它用于将XML转换为java对象,并将java对象转换为XML。JAXB定义了一个用于在XML文档中读写Java对象的API。与SAX和DOM不同,我们不需要了解XML解析技术。 您可以使用JAXB执行两种操作 编组 :将Java对象...

最佳 Java 编程 8381

使用JAXB 进行XML格式数据导入导出 Restful service

JAXB技术介绍(引用的)     Java Architecture for XML Binding (JAXB) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使

老张的专栏 2535

JAXB解析与生成XML

常用注解 @XmlRootElement(name = “report”) 将Java类或枚举类型映射成XML中根元素,设置name属性的值可指定义根元素名称,不设置则默认为类型首字母小写的名称。 @XmlType(propOrder = {“rmsId”, “department”, “userId”, “userName”,“reason”,“time”,“conclusion”,“attac...

article711的博客 604

jaxb框架 ajax传值,jaxb读写xml小例子

搜索热词使用maven构建工程,在pom.xml加入如下依赖:com.sun.xml.bindjaxb-impl2.1.13//一个Person类:package com.mycomp.jaxb;import java.io.Serializable;import javax.xml.bind.annotation.XmlRootElement;@XmlRootElement(name="pers...

weixin_42498585的博客 197

从一个实例看jaxb的强大

  读取xml对于应用软件来说是一个必不可少的工作,当然现在的jdk也提供了很好的处理xml方式,读写xml的库也挺多,包括有名的dom4j,不管使用任何的代码库,对于xml只是一个解析工作而已,不能马上绑定到java 对象。对于对象,每次都需要set 或者get相应的属性,当然也可以使用map 来保存xml配置。    于是,一种新的处理方式用于对象和xml之间的映射就变得非常需要,还好sun提

闲人别居 1098

java xml jaxb_[Java]XML与JAXB

a.xmljinjihulusuzhou215200Marshalla.xsdxjc生成java类D:\JavaSoft\jdk6\bin>xjc -d f:/xmldemo -p demo.xml f:/xmldemo/a.xsdparsing a schema...compiling a schema...demo\xml\Address.javademo\xml\Customer.ja...

weixin_36057373的博客 190

jaxb 尝试实例

读取xml对于应用软件来说是一个必不可少的工作,当然现在的jdk也提供了很好的处理xml方式,读写xml的库也挺多,包括有名的dom4j,不管使用任何的代码库,对于xml只是一个解析工作而已,不能马上绑定到java 对象。对于对象,每次都需要set 或者get相应的属性,当然也可以使用map 来保存xml配置。     于是,一种新的处理方式用于对象和xml之间的映射就变得非常需要,还好sun提供了jaxb,一种很方便的方式来处理java对象和xml内容。下面通过一个实例来体会一下。     看一下如下的x

hjxhjh的专栏 1107
上一篇: java 以追加的方式写文件
下一篇: jQuery 实现table隔行变色
1990_super
博客等级 码龄15年 83粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值