JAVA生成XML文件

JAVA生成XML文件

大家好,又见面了,我是全栈君。

 Java Bean:

package xml;

public class Person {
private String name ;
private int age ;


public Person(String name, int age) {
  super();
  this.name = name;
  this.age = age;
}

public String getName() {
  return name;
}

public void setName(String name) {
  this.name = name;
}

public int getAge() {
  return age;
}

public void setAge(int age) {
  this.age = age;
}


}

详细实现:

package xml;

import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class XmlGeneratorDemo {
public static void main(String[] args) {
  String outputPath = System.getProperty("user.dir")+File.separator + "src"+File.separator+"person.xml";
  generateXml(outputPath);
}
public static void generateXml(String outputPath) {
  try {
   Person [] arr = new Person[]{new Person("jinbo",20), new Person("gameboy",25)};
   List<Person> list = Arrays.asList(arr);//将数组转换成List
   Document doc = generateXml(list);//生成XML文件
   outputXml(doc, outputPath);//将文件输出到指定的路径
  } catch (Exception e) {
   System.err.println("出现异常");
  }
}
/**
  * 将XML文件输出到指定的路径
  * @param doc
  * @param fileName
  * @throws Exception
  */
private static void outputXml (Document doc, String fileName) throws Exception{
  TransformerFactory tf = TransformerFactory.newInstance();
  Transformer transformer = tf.newTransformer();
  DOMSource source = new DOMSource(doc);
  transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
  transformer.setOutputProperty(OutputKeys.INDENT, "yes");//设置文档的换行与缩进
  PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
  StreamResult result = new StreamResult(pw);
  transformer.transform(source, result);
  System.out.println("生成XML文件成功!");
}
/**
  * 生成XML文件
  * @param list
  * @return
  */
public static Document generateXml(List<Person> list){
  Document doc = null;
  Element root = null;
  try {
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
   DocumentBuilder builder = factory.newDocumentBuilder();
   doc = builder.newDocument();
   root = doc.createElement("person");
   doc.appendChild(root);
  } catch (Exception e) {
   e.printStackTrace();
   return null;//假设出现异常,则不再往下运行
  }
  
  int len = list.size() ;
  Element element ;
  for (int i = 0; i < len; i++) {
   Person person = list.get(i);
   element = doc.createElement("person"+(i+1));
   element.setAttribute("age", ""+person.getAge());
   element.setAttribute("name", person.getName());
   root.appendChild(element);
  }
  return doc;
}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116340.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月22日 下午6:00
下一篇 2022年1月22日 下午7:00


相关推荐

  • networkmanager服务是否启动_nmcli开热点

    networkmanager服务是否启动_nmcli开热点一、简介NetworkManager服务是管理和监控网络设置的守护进程,CentOS7更加注重使用NetworkManager服务来实现网络的配置和管理,CentOS7以前是通过network服务管理网络,以后的版本所有网络管理和设置统一由NetworkManager服务来维护。它是一个动态的,事件驱动的网络管理服务。NetworkManager在系统中的管理工具为nmcli二、nmcli简单使用2.1、查看#查看所有硬件设备信息nmclideviceshow#查看制定设备信息

    2022年10月4日
    5
  • 股票历史数据下载接口汇总(动态更新)

    歪枣网上提供股票历史数据下载接口汇总,实时动态更新接口名称 Api接口 接口描述 A股列表 getStockHSABaseInfo 沪深A股基本信息 每日行情 getStockHSADailyMarket 沪深A股每日行情数据 实时数据 getStockHSAMinuteKLine 沪深A股实时数据,提供30个交易日内的每日实时交易数据,数据以分钟为粒度。 时线数据 getStockHSAHourKLine 沪深A股分时数据,提供30个交易日内的5分钟、15分钟、30分钟、60分钟数据。 日线数

    2022年4月7日
    305
  • Linux rpm安装jdk1.8

    Linux rpm安装jdk1.8前言每次需要配置JDK的时候都需要去网上搜一下,这次专门写下博客以备后用,虽然这个博客实在是太!简!单!了!亲测CentOS6,CentOS7都没有问题第一步:卸载系统自带的JDKrpm-qa|grepjava#xxxyyyzzz为你要卸载的插件,插件之间以空格隔开rpm-e–nodepsxxxyyyzzz第二步:安装JDK1.8…

    2022年6月11日
    32
  • visdom总结[通俗易懂]

    visdom总结[通俗易懂]1叫做env=environment2叫做win=window

    2022年6月17日
    47
  • c#窗体怎么居中_窗口居中

    c#窗体怎么居中_窗口居中窗体始终居桌面中央显示,需要考虑以下两个方面:(1).窗体距离桌面左部边缘与桌面的宽度以及自身宽度的判断;(2).窗体距离桌面上边缘与桌面的高度以及自身高度的判断下面用代码一一实现,当然这都是在窗体加载时完成this.Left=Screen.PrimaryScreen.Bounds.Width/2-this.Width/2;//桌面的宽度的一半减去自身宽的的一半this…….

    2025年10月14日
    7
  • 图像处理-激光测距技术&工业相机基本原理概述「建议收藏」

    图像处理-激光测距技术&工业相机基本原理概述「建议收藏」激光测距技术与一般光学测距技术相比,具有操作方便、系统简单及白天和夜晚都可以工作的优点.与雷达测距相比,激光测距具有良好的抗干扰性和很高的精度,而且激光具有良好的抵抗电磁波干扰的能力,尤其在探测距离较长时,激光测距的优越性更为明显.激光测距技术是指利用射向目标的激光脉冲或连续波激光束测量目标距离的距离测量技术.比较常用的激光测距方法有脉冲法、相位法、三角法和干涉法激光测距.本文主要探讨下激光三角法的基本原理和工业相机原理:1.1激光三角法的基本原理光电技术的快速发展,以及计算.

    2022年5月30日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号