用的是jdk自带的javax.xml.bind.JAXBContext将对象和xml字符串进行相互转换。

比较常用的几个:

@XmlRootElement:根节点

@XmlAttribute:该属性作为xml的attribute

@XmlElement:该属性作为xml的element,且可以增加属性(name="NewElementName"),那么生成的xml串的elment的标签是NewElementName

首先,java注解读取XML。

一、新建school.xml文件,内容如下:

延边大学

吉林延吉市

001

小杜

23

002

小张

21

二、根据配置文件书写对应的注解类。

编写Student基类,内容如下:

package com.cvicse.ump.xml.school;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

public class Student {

private String studentNum;

private String studentName;

private String studentGrade;

private int age;

@XmlElement(name="num")

public String getStudentNum() {

return studentNum;

}

public void setStudentNum(String studentNum) {

this.studentNum = studentNum;

}

@XmlElement(name="name")

public String getStudentName() {

return studentName;

}

public void setStudentName(String studentName) {

this.studentName = studentName;

}

@XmlAttribute(name="grade")

public String getStudentGrade() {

return studentGrade;

}

public void setStudentGrade(String studentGrade) {

this.studentGrade = studentGrade;

}

@XmlElement

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "Student [studentNum=" + studentNum + ", studentName="

+ studentName + ", studentGrade=" + studentGrade + ", age="

+ age + "]";

}

}

编写基类school,内容如下:

packagecom.cvicse.ump.xml.school;importjava.util.List;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="SCHOOL")public classSchool {privateString name;privateString address;private Liststudents;

@XmlElementpublicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}

@XmlElementpublicString getAddress() {returnaddress;

}public voidsetAddress(String address) {this.address =address;

}

@XmlElement(name="student")public ListgetStudents() {returnstudents;

}public void setStudents(Liststudents) {this.students =students;

}

@OverridepublicString toString() {return "School [name=" + name + ", address=" + address + "]";

}

}

编写XML读取程序:

package com.cvicse.ump.xml.school;

import java.io.File;

import java.util.List;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Unmarshaller;

public class SchoolRead {

public static void main(String[] args) {

File file = new File("src/school.xml");

try {

JAXBContext context = JAXBContext.newInstance(School.class);

Unmarshaller unMar = context.createUnmarshaller();

School school = (School) unMar.unmarshal(file);

System.out.println(school);

Liststudents = school.getStudents();

for(Student student:students){

System.out.println(student);

}

} catch (JAXBException e) {

e.printStackTrace();

}

}

}

编写写入文件程,内容如下:

package com.cvicse.ump.xml.school;

import java.util.ArrayList;

import java.util.List;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

public class SchoolWrite {

public static void main(String[] args) {

School school = new School();

school.setName("实验小学");

school.setAddress("山东济南市");

List students = new ArrayList();

Student student1 = new Student();

student1.setStudentNum("001");

student1.setStudentName("xiaoDy");

student1.setAge(25);

student1.setStudentGrade("1");

Student student2 = new Student();

student2.setStudentNum("002");

student2.setStudentName("xiaoWf");

student2.setAge(22);

student2.setStudentGrade("2");

students.add(student1);

students.add(student2);

school.setStudents(students);

try {

JAXBContext context = JAXBContext.newInstance(School.class);

Marshaller mar = context.createMarshaller();

mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");

mar.marshal(school, System.out);

} catch (JAXBException e) {

e.printStackTrace();

}

}

}

源码下载:https://yunpan.cn/cxDZgKQbeDLqt (提取码:68e1)

参考网址:http://blog.csdn.net/lhzjj/article/details/11796713

java xml annotation_java注解XML相关推荐

  1. Spring—xml和注解

    xml与注解 xml万能,适用于任何场合,维护简单方便 注解 不是自己的类使用不了,维护相对复杂 xml和注解的最佳实践 xml用来管理bean 注解只负责完成属性的注入 要开启注解的支持 自动装配 ...

  2. 用小说的形式讲解Spring(3) —— xml、注解和Java Config到底选哪个

    本文发布于专栏Effective Java,如果您觉得看完之后对你有所帮助,欢迎订阅本专栏,也欢迎您将本专栏分享给您身边的工程师同学. 本集概要: 为什么说xml配置是类型不安全的配置方式? 如何使用 ...

  3. spring 配置的三种方式:XML配置,JAVA配置和注解配置

    spring自从3.0开始以后,就全面推荐使用配置的方式进行代码编写了,这种方式确实可以避免了之前一个项目里面一大堆XML的情况,毕竟XML的可读性实在不怎么样,而且一会写JAVA,一会写XML,确实 ...

  4. @select注解_mybatis开发,你用 xml 还是注解?我 pick xml

    最近在看公司项目时发现有的项目mybatis是基于注解开发的,而我个人的习惯是基于xml文件开发. 对于mybatis注解开发的原理理解不够,于是翻阅了部分源码,写下此文.主要介绍了mybatis开发 ...

  5. 基于XML和注解的Spring Bean管理

    文章目录 Spring工厂接口 BeanFactory接口 ApplicationContext 接口 Spring的bean管理的两种方式: 3 种实例化bean的方式(xml) 通过构造方法创建b ...

  6. XML和注解(Annotation)

    XML 一.什么是XML XML(eXtended Markup Language)是一种可扩展标记语言,主要用于数据传输. 二.XML文档的结构 主要组成为:声明,元素,注释,属性,文本等. 一个格 ...

  7. JAVAWEB开发之Spring详解之——Spring的入门以及IOC容器装配Bean(xml和注解的方式)、Spring整合web开发、整合Junit4测试

    Spring框架学习路线 Spring的IOC Spring的AOP,AspectJ Spring的事务管理,三大框架的整合 Spring框架概述 什么是Spring?  Spring是分层的Java ...

  8. 解决maven打包时漏掉src/main/java资源里的xml的问题

    在整合Spring + Mybatis框架的时候,自动扫描配置都已经配置好了. 配置如下: <context:component-scan base-package="com.yd&q ...

  9. xml java jaxb_【Java】JAXB操作XML用法详解

    什么是JAXB? JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.在JAX-WS(Java的W ...

  10. Spring装配bean的三种方法:自动化装配,java代码装配,XML装配及它们的混合使用

    一.自动化装配 首先,把可能被装配的类声明为组件类,告知spring要为这个类创建bean如: import org.springframework.stereotype.Component;@ Co ...

最新文章

  1. 算法设计与分析第4章 动态规划(二)【DP序列问题】
  2. Gif(1)-加载视图-交替圆效果
  3. 八大排序算法图文讲解
  4. django html文本编辑器,django xadmin 集成DjangoUeditor富文本编辑器
  5. 深度启动盘工具linux,Linux下无法安装深度启动盘制作工具
  6. 网络编程套接字API
  7. 从xml中返回的对象,和new 返回的对象时不同的。
  8. 测试接口python常用命令_用python实现接口测试(四、操作MySQL)-阿里云开发者社区...
  9. java 队列的使用
  10. SQL调优日记--并行等待的原理和问题排查
  11. ASCII码表 0-255完整版 附详细注释
  12. 【性能优化】如何让APK瘦成一道闪电
  13. Python根据歌曲id爬取网易云音乐歌词
  14. 计算机c盘容易满怎么办,C盘快满了怎么办 如何清理C盘垃圾?
  15. VB语言通用基础语句
  16. 新丰机器人_韶关新丰:智能巡检开启配电网运维新模式
  17. Camera Link相机接口
  18. spring boot  mybatis 事务回滚
  19. matlab图形界面fig文件打开不能编辑
  20. requests使用cookie模拟登陆豆瓣

热门文章

  1. 区块链50国之泰国:发行国家数字货币CTH 欲与新加坡争夺东南亚ICO中心 | 链塔智库...
  2. 科创板|交控科技确定发行价 每股16.18元将发行4000万股
  3. Name for argument type [java.lang.String] not avai
  4. IE-LAB网络实验室:5G和WIFI6,还傻傻的分不清吗?(4)
  5. 草根创业,屌丝逆袭的最后机会
  6. 浅谈项目开发中的模块化、解耦、封装
  7. python cx_oracle 安装_python3.7安装cx_Oracle
  8. Item19 设计class犹如设计type
  9. SpringBoot整合阿里巴巴Druid数据源
  10. UVALive 3412 Pesky Heroes(树形dp)