创建Girl.java类

import java.util.List;
import javax.xml.bind.annotation.*; @XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "root")
public class Girl {
@XmlAttribute(name = "type")
private String type;
@XmlElement(name = "name")
private String name; @XmlElement(name = "age")
private String age; @XmlElement(name = "girl")
private List<Girl> girlList; public String toString() {
StringBuilder sb = new StringBuilder();
for (Girl girl : girlList) {
sb.append(girl.toString());
}
return sb.toString();
} public Girl(){
super();
} public Girl(String name,String age){
this.name=name;
this.age=age;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public String getAge() {
return age;
} public void setAge(String age) {
this.age = age;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Girl> getGirlList() {
return girlList;
} public void setGirlList(List<Girl> girlList) {
this.girlList = girlList;
} }

  编写测试类

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List; import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller; public class TestUnm {
public static void main(String[] args) {
marshaller();
} public static void marshaller() {
try {
JAXBContext jaxbC = JAXBContext.newInstance(Girl.class);
Marshaller ms = jaxbC.createMarshaller();
ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Girl girl=new Girl();
List<Girl> girls=new ArrayList<Girl>();
Girl g1=new Girl("小红", "20");
Girl g2=new Girl("小芳", "16");
Girl g3=new Girl("小丽", "17");
girls.add(g1);
girls.add(g2);
girls.add(g3);
girl.setGirlList(girls);
StringWriter sw=new StringWriter();
ms.marshal(girl, sw);
System.out.println(sw.toString());
createFile("E:\\app\\","test.xml",sw.toString());
} catch (Exception e) {
e.printStackTrace();
}
} public static boolean createFile(String path,String fileName,String fileContent){
boolean bool=false;
File file=new File(path+File.separator+fileName);
try {
if(!file.exists()){
file.createNewFile();
bool=true;
}
writeFileContent(path+File.separator+fileName,fileContent);
} catch (Exception e) {
e.printStackTrace();
}
return bool;
} public static boolean writeFileContent(String path,String fileContent){
boolean bool=false;
FileOutputStream fos=null;
PrintWriter pw=null;
try {
File file=new File(path);
fos=new FileOutputStream(file);
OutputStreamWriter writer=new OutputStreamWriter(fos, "UTF-8");
pw=new PrintWriter(writer);
pw.write(fileContent);
pw.flush();
bool=true;
} catch (Exception e) {
e.printStackTrace();
}
return bool;
} }

  

Marshaller根据对象生成xml文件的更多相关文章

  1. Android 使用xml序列化器生成xml文件

    在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...

  2. C#对象与XMl文件之间的相互转换

    C#提供三种序列化方式,分别为: 1.是使用BinaryFormatter进行串行化: 2.使用SoapFormatter进行串行化: 3.使用XmlSerializer进行串行化.其中对于Binar ...

  3. 视频播放实时记录日志并生成XML文件

    需求描述: 在JWPlayer视频播放过程中,要求实时记录视频观看者播放.暂停的时间,并记录从暂停到下一次播放时所经过的时间.将所有记录保存为XML文件,以方便数据库的后续使用. 实现过程: 尝试1: ...

  4. 使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...

  5. 使用XMl序列化器生成xml文件

    生成XML文件 创建几个虚拟的短信对象,存在list中 备份数据通常都是备份至sd卡 使用StringBuffer拼接字符串 把整个xml文件所有节点append到sb对象里 sb.append(&q ...

  6. 使用Pull解析器生成XML文件和读取xml文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使 ...

  7. 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析

    首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...

  8. C#对象与XMl文件之间的相互转换(转)

    本文是对C#中对象与XMl文件之间的相互转换进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 C#提供三种序列化方式,分别为:1.是使用BinaryFormatter进行串行化: 2.使 ...

  9. 使用XPath对象解析xml文件

    使用XPath对象解析xml文件 1.DocumentBuilderFactory类  工厂API,使应用程序能从XML文档获取生成DOM对象树的解析器 其构造方法受保护,用newInstance() ...

随机推荐

  1. MIPS 汇编指令学习

    MIPS 寄存器 MIPS comes with 32 general purpose registers named $0. . . $31Registers also have symbolic ...

  2. translate函数

    translate函数: select translate('ab23cd1', '.0123456789' || 'ab23cd1', '.0123456789') from dual 截图:

  3. 升级安装windows8.1以后windowsphone8不能启动虚拟机的办法

    如果之前在的虚拟机是OK的话,VS2012需要安装update3补丁才可以. 下载地址:http://download.microsoft.com/download/D/4/8/D48D1AC2-A2 ...

  4. 基于Jquery实现省份、城市、区县三级联动

    前端感觉写的比较少,也是为了练手,下午没事用来写了这个三级联动,也是第一次写这东西. 据我了解,城市信息可以选择存在数据库或者直接写在前端,为了省事,我直接写在前端,下面是我的代码: <!DOC ...

  5. L178 smart meter watchdog

    There is "no realistic prospect" of the government meeting its own deadline to install sma ...

  6. 6.4-6.5 使用form表单验证,完善登录页面

    之前是使用自定义的类来实现登录逻辑,现在使用django内置的form表单验证,用继承django的view来实现登录页面. users > views.py 的内容是: from django ...

  7. Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.elasticsearch.threadpool.ThreadPool

    springboot中遇到的, 将guava添加到项目中即可.(当时添加的是guava 18)

  8. jqGrid使用json实现的范例一

    qGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信.文档比较全面,其官方网址为:http://www.trirand.com. ...

  9. 【项目经验】macpro上安装office办公软件并破解

    链接: https://pan.baidu.com/s/1i5hyKO9 密码: 7zjf 如果本机原有office,先卸载 双击pkg文件安装office for Mac 2016 安装完不要做打开 ...

  10. TimescaleDB 简单试用

    TimescaleDB 是一个对于pg进行了改造的时序数据库 安装测试使用docker 安装&&运行 docker run -d --name timescaledb -p 5432: ...